JavaScript 配列

NOTE

  • 配列は通常のオブジェクトと異なる振る舞いをすることがある

配列の値の更新

const l = [1, 2, 3];
l[0] = 'A';
console.log(l) // [ 'A', 2, 3 ]

配列の要素数 length

const l = [1, 2, 3];
console.log(l.length); // 3
const l = [1, 2, 3];

for (let i = 0; i < l.length; i++) {
  console.log(l[i]);
}

配列に要素を追加・削除・抽出

末尾に追加 push

const l = [1, 2, 3];
l.push(4);
// [1, 2, 3, 4]

末尾を取り除く pop

const l = [1, 2, 3];
l.pop(); // 引数不要
// [1, 2]

末尾を抽出

const l = [1, 2, 3];
const last = l.pop();
// 3

先頭を取り除く shift

const l = [1, 2, 3];
l.shift();
// [ 2, 3 ]

先頭を抽出

const l = [1, 2, 3];
const first = l.shift();
// 1

先頭に追加 unshift

const l = [1, 2, 3];
l.unshift(0);
// [ 0, 1, 2, 3 ]

配列同士を結合 concat

const a = [1,2,3];
const b = [4,5,6];

let c = a.concat(b);
let d = b.concat(a);

console.log(c);
// [ 1, 2, 3, 4, 5, 6 ]
console.log(d);
// [ 4, 5, 6, 1, 2, 3 ]

要素の存在を確認 includes

l = ['aaa', 'bbb', 'ccc']

console.log(l.includes('aaa'));
// true
console.log(l.includes('ddd'));
// false

要素のインデックスを確認 indexOf

l = ['aaa', 'bbb', 'ccc']

console.log(l.indexOf('aaa'));
// 0
console.log(l.indexOf('ccc'));
// 2
console.log(l.indexOf('ddd'));
// -1 存在しない場合は -1 を返す

配列の並びを逆順にする reverse

l = ['aaa', 'bbb', 'ccc']

console.log(l.reverse(l));
// [ 'ccc', 'bbb', 'aaa' ]

配列をスライス slice

l = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']

l_2 = l.slice(2);
// [ 'ccc', 'ddd', 'eee' ]

l_3 = l.slice(1, 3);
// [ 'bbb', 'ccc' ]

l_4 = l.slice(-1);
// [ 'eee']

配列の一部を削除・追加 splice

一部を削除

l = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']

l_2 = l.splice(2, 1);
// インデックス[2]の要素から 1つの要素を削除

console.log(l_2);
// [ 'ccc' ]
  • 元の配列からも指定した要素が削除される
console.log(l);
// [ 'aaa', 'bbb', 'ddd', 'eee' ]
l = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']

l_2 = l.splice(2, 2);
// インデックス[2]の要素から 2つの要素を削除

console.log(l_2);
// [ 'ccc', 'ddd' ]
console.log(l);
// [ 'aaa', 'bbb', 'eee' ]

特定の場所に追加

l = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']

l_2 = l.splice(2, 0, 'zzz');
// インデックス[2]の要素から、要素を削除せず、新規に追加

console.log(l_2);
// [] *何も削除していないので空のリストが返される
console.log(l);
// [ 'aaa', 'bbb', 'zzz', 'ccc', 'ddd', 'eee' ]