個人的によく使うものを中心に、
JavaScriptの配列の使い方について色々まとめ。
配列の生成
配列を生成するには、
var array = [];
または、
var array = new Array();
のように行います。
生成の時点でデータを格納しておく場合は、カッコ内に格納するデータを指定します。
var array = ['data1', 'data2', 'data3', ...]; var array = new Array('data1', 'data2', 'data3', ...);
文字列を分割して配列を作成することもできます。
val.split(data) | 文字列valをdataの値で区切って配列にする。 |
---|
var url = 'https://cly7796.net/blog/javascript/how-to-use-javascript-array/'; var array = url.split('/'); // ['http:', '', 'cly7796.net', 'wp', 'how-to-use-javascript-array', '']
配列の取得
array[num] | numで指定した配列を取得。 array[num] = data; で、指定した配列の値をdataに変更。 |
---|---|
array.length | 配列の個数取得。 |
array.slice(start, end) | startとendで指定した範囲の配列を取得。 2番目の番号が省略された場合は、配列の最後までを取得。 |
配列取得のサンプルコード
var array = ['data1', 'data2', 'data3', 'data4', 'data5']; // 2番目の配列を取得 console.log(array[1]); // 'data2' // 3番目のデータを「data7」に変更 array[2] = 'data7'; console.log(array); // ['data1', 'data2', 'data7', 'data4', 'data5'] // 配列の個数取得 console.log(array.length); // 5 // 2番目から4番目までの配列取得 console.log(array.slice(1, 4)); // ['data2', 'data7', 'data4'] // 3番目から最後までの配列取得 console.log(array.slice(2)); // ['data7', 'data4', 'data5']
配列の追加・削除
array.unshift(data) | 配列の先頭にdataを追加。 |
---|---|
array.push(data); | 配列の最後にdataを追加。 |
array.shift() | 配列の先頭の値を削除。削除後は2番目以降が前に詰める。 |
array.pop() | 配列の最後の値を削除。 |
delete array[num] | 指定した配列の値を削除。 削除した配列は前に詰めずにundefinedになる。 |
array.splice(num, del, [add]) | 指定した値を削除。または指定箇所に値を追加。 numで指定した箇所からdelの数だけ削除。削除後は前に詰める。 (delが0の場合は削除なし。) addに値が入っている場合、numで指定した箇所にデータを追加。 (追加しない場合は空。複数個追加する場合は,で区切る。) |
配列追加・削除のサンプルコード
var array = ['data1', 'data2', 'data3', 'data4', 'data5']; // 配列の先頭に「data0」を追加 array.unshift('data0'); console.log(array); // ['data0', 'data1', 'data2', 'data3', 'data4', 'data5'] // 配列の最後に「data8」を追加 array.push('data8'); console.log(array); // ['data0', 'data1', 'data2', 'data3', 'data4', 'data5', 'data8'] // 配列の先頭を削除 array.shift(); console.log(array); // ['data1', 'data2', 'data3', 'data4', 'data5', 'data8'] // 配列の最後を削除 array.pop(); console.log(array); // ['data1', 'data2', 'data3', 'data4', 'data5'] // 配列の3番目を削除 delete array[2]; console.log(array); // ['data1', 'data2', undefined, 'data4', 'data5'] // 配列の2番目から2つ削除 array.splice(1, 2); console.log(array); // ['data1', 'data4', 'data5'] // 配列の2番目に「data7」「data8」を追加 array.splice(1, 0, 'data7', 'data8'); console.log(array); // ['data1', 'data7', 'data8', 'data4', 'data5'] // 配列を空にする array = []; console.log(array); // []
その他
array.join(val) | 配列の全ての要素を文字列に変換して連結する。 valを指定している場合、連結部分にvalが入る。 |
---|---|
array.indexOf(val) | 配列内からvalの値を持つ要素を探して、 見つかった場合はインデックス番号を取得する。 見つからなかった場合は-1、複数ある場合は最初のインデックス番号を取得する。 |
array.lastIndexOf(val) | 配列内の最後先頭に向かってvalの値を持つ要素を探して、 見つかった場合はインデックス番号を取得する。 見つからなかった場合は-1、複数ある場合は後方のインデックス番号を取得する。 |
array.reverse() | 配列の並び順を逆にする。 |
array.sort() | 配列の要素をアルファベット順にソートする。 未定義値がある場合は最後にソートされる。 |
サンプルコード
var array = ['data3', 'data2', 'data5', 'data1', undefined, 'data4']; // 配列の連結 console.log(array.join()); // 'data3,data2,data5,data1,,data4' console.log(array.join('')); // 'data3data2data5data1data4' console.log(array.join('-')); // 'data3-data2-data5-data1--data4' // 配列内から'data5'を探す console.log(array.indexOf('data5')); // 2 // 配列内から'data7'を探す console.log(array.indexOf('data7')); // -1 // 配列内の最後から'data1'を探す console.log(array.lastIndexOf('data1')); // 3 // 配列の並び順を逆にする array.reverse(); console.log(array); // ['data4', undefined, 'data1', 'data5', 'data2', 'data3'] // 配列をアルファベット順にソートする array.sort(); console.log(array); // ['data1', 'data2', 'data3', 'data4', 'data5', undefined]
多次元配列
JavaScriptでは多次元配列はサポートしていません。
しかし、配列の値に配列を格納することで、近いことができます。
通常の配列が以下のような構造だとすると、
data1 | data2 | data3 | data4 |
var array = ['data1', 'data2', 'data3', 'data4'];
多次元配列(2次元配列)は以下のような構造になります。
data1-1 | data1-2 | data1-3 | data1-4 |
data2-1 | data2-2 | data2-3 | data2-4 |
data3-1 | data3-2 | data3-3 | data3-4 |
var array = [ ['data1-1', 'data1-2', 'data1-3', 'data1-4'], ['data2-1', 'data2-2', 'data2-3', 'data2-4'], ['data3-1', 'data3-2', 'data3-3', 'data3-4'] ];
多次元配列取得のサンプルコード
// 多次元配列(2次元配列)の生成 var array = [ ['data1-1', 'data1-2'], ['data2-1', 'data2-2'], ['data3-1', 'data3-2'] ]; // 配列全体の取得 console.log(array); // [['data1-1', 'data1-2'], ['data2-1', 'data2-2'], ['data3-1', 'data3-2']] // arrayの1番目を取得 console.log(array[0]); // ['data1-1', 'data1-2'] // arrayの2番目の中の2番目を取得 console.log(array[1][1]); // 'data2-2' // 配列内の個数を取得 console.log(array.length); // 3 // arrayの1番目内の個数を取得 console.log(array[0].length); // 2 // arrayの最後に配列を追加 array.push(['data6-1', 'data6-2']); console.log(array); // [['data1-1', 'data1-2'], ['data2-1', 'data2-2'], ['data3-1', 'data3-2'], ['data6-1', 'data6-2']] // arrayの2番目の配列の先頭の配列を削除 array[1].shift(); console.log(array); // [['data1-1', 'data1-2'], ['data2-2'], ['data3-1', 'data3-2'], ['data6-1', 'data6-2']]
連想配列
連想配列とは、配列格納時に値ごとに名前を付けることが出来る配列です。
var array = {key1: 'data1', key2: 'data2', key3: 'data3'};
多次元配列取得のサンプルコード
// 連想配列の生成 var array = {key1: 'data1', key2: 'data2', key3: 'data3'}; // 配列の取得 console.log(array['key1']); // 'data1' // 配列内の個数を取得 console.log(Object.keys(array).length); // 3 // 配列内の最後に要素を追加 array['key4'] = 'data4'; console.log(array); // {key1: 'data1', key2: 'data2', key3: 'data3', key4: 'data4'} // 配列内のkey2を削除 delete array.key2; console.log(array); // {key1: 'data1', key3: 'data3', key4: 'data4'}
※連想配列では.push()や.shift()は使用できません。
※Object.keys()はIE9からサポートのようです。
多次元配列+連想配列
配列の中に連想配列、連想配列の中に配列を入れ子にしたりもできます。
多次元配列+連想配列のサンプルコード
// 配列の生成 var array = [ { key1: 'data1-1', key2: 'data1-2', key3: ['data1-3-1', 'data1-3-2'] }, { key1: 'data2-1', key2: 'data2-2', key3: ['data2-3-1', 'data2-3-2'] } ]; // 配列の取得 console.log(array[0]); // {key1: 'data1-1', key2: 'data1-2', key3: ['data1-3-1', 'data1-3-2']} console.log(array[0]['key1']); // 'data1-1' console.log(array[0]['key3'][1]); // 'data1-3-2' // 配列内の個数を取得 console.log(Object.keys(array).length); // 2 // 配列内の最後に要素を追加 array.push({key1: 'data3-1', key2: 'data3-2', key3: ['data3-3-1', 'data3-3-2']}); console.log(array); // [{key1: 'data1-1', key2: 'data1-2', key3: ['data1-3-1', 'data1-3-2']}, {key1: 'data2-1', key2: 'data2-2', key3: ['data2-3-1', 'data2-3-2']}, {key1: 'data3-1', key2: 'data3-2', key3: ['data3-3-1', 'data3-3-2']}] // 配列内の2番目の要素を削除 array.splice(1, 1); console.log(array); // [{key1: 'data1-1', key2: 'data1-2', key3: ['data1-3-1', 'data1-3-2']}, {key1: 'data3-1', key2: 'data3-2', key3: ['data3-3-1', 'data3-3-2']}]
コメントが承認されるまで時間がかかります。