Javascript > 連想配列

下位ページ

Content


宣言

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

配列、連想配列


要素数

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

要素の追加

引数で追加

var renso = {}
renso.hoge = "hoge";
renso.fuga = "fuga";

連想配列を結合する

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


forで回したい

for(len key in dict){}
で回せるが、他にも
Object.keys(dict).forEach
Object.keys(dict)でkeyを取り出してforEachを使うこともできる。ただ、forEachではbreakが使えない(return で逃げる)ので面倒。
for ... in ...
forEach
JavaScriptにおける連想配列のforループ操作
最終更新:2020年07月31日 23:45