JavaScript/コレクション

Last-modified: 2012-11-25 (日) 00:24:42

リスト

Arrayで実装する。

参考

作成

var list = [];            // 空
var list = [1, 2, 3, 4];  // 要素(値)を指定
var list = [1, 2,, 4, 5]; // 要素(値)を指定。指定しなかった部分はundefined

// 避けるべき記述
var list = [1, 2, 3, 4, ]; // IEでは要素数5, Chromeでは4になる。
var list = new Array(1, 2, 3, 4); // 問題なく作成できる。しかし、要素数1のときにnew Array(1)とすると別の意味(配列サイズの指定)になる。

要素数取得

list.length

参照

  • 先頭
    value = list[0]
    • インデックス0が存在しなければundefined
  • 末尾
    value = (list.length > 0) ? list[list.length - 1] : null;
    • 以下の方法もありうる。
      value = list[list.length - 1];
      • list.length==0のとき、list["-1"]の値が取得される点に注意。"-1"というプロパティが未定義なことを前提にすれば、利用できる。この場合、list.length==0ならundefinedが得られる。

一部を取り出す

subList = list.slice(3);      // index = 3から最後までを取得
subList = list.slice(3, 5);   // index = 3から、4まで(5の手前まで)を取得
subList = list.slice(3, -1);  // index = 3から、最後から2番目まで(index= length -1 の手前まで)を取得

参考

末尾に追加

  • 1個追加
    list.push(value);
  • 複数追加
    list.push(value1, value2, ...);
  • undefinedを追加して、リストの要素数を指定の数にする。
    list.length = n;
    • nが元のlengthより小さければ、リストの末尾がカットされる。

参考

先頭に追加

  • 1個追加
    list.unshift(value);
  • 複数追加
    list.unshift(value1, value2, ...);

参考

挿入

list.splice(3, 0, value1, value2, ...); // index = 3 の位置にvalue1, value2,...を挿入。
  • 第二引数には0を指定。

結合

list = list.concat(list2, list3, ...);
  • list.concatはlist自体は変更せずに新しいArrayを作って返す。
  • concatの引数がArrayでない場合は、それ自身を新しいArrayに追加する。引数がArrayか否かで挙動が変わる点に注意。

参考

削除

  • 末尾から取り出して削除
    value = list.pop();
    • listが空ならundefined。
  • 先頭から取り出して削除
    value = list.shift();
    • listが空ならundefined。
  • 指定部分を取り出して削除
    subList = list.sprice(3, 2); // index = 3 から2個を削除。削除した要素のArrayを取得。
    • 第二引数が0なら何も削除されない。subListは空の配列になる。

参考

置換

  • 指定部分を削除してそこへ別の要素を追加
    list.sprice(3, 2, value1, value2, ...);

並び替え

list.sort();
list.sort(callback);
list.reverse();

検索

list.indexOf(searchElement[, fromIndex]) // ECMAScript 5
list.lastIndexOf(searchElement[, fromIndex])  // ECMAScript 5