Javascript > 配列

下位ページ

Content


宣言

new Array()
var a = new Array()
もしくは []で最初から中身や要素数を書く。
var a = []

配列、連想配列


要素数

array.length
関数ではなく、プロパティ
lengthプロパティ

要素の追加

引数で追加

空き番号に入れる
var a = [1,2,3]; // a[0]=1,a[1]=2,a[2]=3
a[5]=6; // a[0]=1, a[1]=2, a[2]=3, a[3]=undefined, a[4]=undefined, a[5]=6

push

末尾に追加する
array.push(a);

連想配列を結合する

jQueryには
$.extend(target,obj1[,obj2,...])
という関数があるらしい。
jQuery.extend
$.extend() - js STUDIO


要素の削除

splice()

array.splice(index, howMany, [element1][, ..., elementN]);)
index の要素から howMany 個削除する
※その場で配列長が短くなるので、ループを回す際には後ろから回すなど、工夫が必要

indexが配列長より大きい場合


要素のソート(並び替え)

sort

htmlでいうところのli要素(の集合、配列)に対して使ってみたが、リストの順番は実では反映されず。
html($(ul>li).sort())をしてみたら、ソートはできたが、.data("-","~")でくっつけておいたデータが反映されず。

変数の並べ替えは「辞書的」に行われる。
.sort(compareFunction)
でcomareFunctionを定義することで、オブジェクト等々でも並べ替えが可能。
  1. compareFunction(a,b) < 0 : a→bの順に並べる
  2. compareFunction(a,b) = 0 : a = b と判断(並べ替えない)
  3. compareFunction(a,b) > 0 : b→aの順に並べる

中でどのような並べ替えが行われているのか?どうも挿入ソートで行われているようだ(firefoxとchromeでは)。挿入ソートなので、n番目の要素のソート(挿入位置の検索)を開始してから、並べ替えが発生しなかったとき、つまり compareFunction < 0 になったとき、次のn+1番目の要素のソートに遷移する、という意味でいいのか?
すると、「並べ替えて次の」か並べ替えないか」だから、すくなくともfirefoxとchromeでは、compareFunction = 0 と compareFunction > 0 は「並べ替えない」という意味で同義になるのか?
Array.sort - MDN

要素の確認

array.indezOf( )
を使って、インデックスがあるか(-1か)で確認できる。

配列要素に対する処理

for a of A で取り出す

A.forEach() で取り出す

forEach は関数を引数にとる。そのため、break, continue で抜けられない。return で飛ばす。
.some() とか、要素に対するループを処理するものが他にもある。
https://38fanjia.hatenablog.com/entry/2016/10/10/170900
最終更新:2020年07月31日 23:42