e1, e2, ...を要素とする配列を作成します。配列のインデックスは 0 から始まります。
var arr = ["Red", "Green", "Blue"]; console.log(arr); // => ["Red", "Green", "Blue"] console.log(arr[0]); // => "Red" console.log(arr[1]); // => "Green" console.log(arr[2]); // => "Blue"
配列を作成するのに、以前は new Array() を使用していましたが、今ではあまり使用されません。
var arr1 = new Array(); // 要素が0個の配列を作成 var arr2 = new Array(3); // 要素が3個の空配列を作成 var arr3 = new Array("Red", "Green", "Blue"); // var arr3 = ["Red", "Green", "Blue"]と等価
ES2015(ES6) から追加されたもので、String, Set, Map などの配列ライクなオブジェクトや反復可能オブジェクト arrayLike から新しい配列を作成します。
var str = "ABC"; var arr1 = Array.from(str); console.log(arr1); // => ["A", "B", "C"] var set = new Set([123, "ABC"]); var arr2 = Array.from(set); console.log(arr2); // => [123, "ABC"] var map = new Map([[1, 2], [2, 4], [4, 8]]); var arr3 = Array.from(map); console.log(arr3); // => [[1, 2], [2, 4], [4, 8]]
mapFunc は、配列を作成する際に各要素に対して実行されるマップ関数です。thisArg にはマップ関数で this で参照される値を指定します。
var arr = Array.from([1, 2, 3], function(x) { return(x * 2); });
console.log(arr); // => [2, 4, 6]
ES2015 で追加されたメソッドで、可変引数 e1, e2 ... を受け取り、新しい配列を作成します。ES2015(ES6) で定義されたもので、IE11 ではサポートされていません。
var arr = Array.of(1, 2, 3);
console.log(arr); // => [1, 2, 3]
new Array() とほぼ同じ動作ですが、引数が単一の数値の場合、new Array() は指定個数分の空配列を返すのに対し、Array.of() は常に引数の個数分の要素を持つ配列を返します。
var arr1 = new Array(3); console.log(arr1); // => [empty, empty, empty] var arr2 = Array.of(3); console.log(arr2); // => [3]
以下のようにして多次元の配列も扱うことができます。
var arr = [];
for (var i = 0; i < 3; i++) {
arr[i] = [];
for (var j = 0; j < 4; j++) {
arr[i][j] = i * 100 + j;
}
}
console.log(arr[2][3]); // => 203
配列要素の個数を得るには length プロパティを参照します。
var arr = ["Red", "Green", "Blue"];
console.log(arr.length); // => 3
length に 0 を代入することで、配列の要素をすべて削除することができます。
arr.length = 0;
下記の様にして配列の各要素に対して処理を行うことができます。
var arr = ["Red", "Green", "Blue"];
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]); // => "Red", "Green", "Blue"
}
下記の様に記述することもできます。
var arr = ["Red", "Green", "Blue"];
for (var i in arr) {
console.log(arr[i]); // => "Red", "Green", "Blue"
}
配列の各要素を引数にして callback 関数を実行します。this はコールバック関数の中で this として参照される値です。コールバックの引数には、要素値(value)、要素のインデックス(index)、配列自体(array)が渡されます。
var arr = ["Red", "Green", "Blue"];
arr.forEach(function(value, index, array) {
console.log(value); // => "Red", "Green", "Blue"
});
callback はアロー関数を用いて下記の様にも記述できます。
var arr = ["Red", "Green", "Blue"]; arr.forEach((value, index, array) => { console.log(value); });
array の各要素について、entries() は key と value からなるイテレータ、keys() は key のみからなるイテレータ、values() は value のみからなるイテレータを返します。ES2015(ES6) で追加された機能で、IE11 ではサポートされていません。
var arr = ["Red", "Green", "Blue"]; for (var elem of arr.entries()) { console.log(elem[0] + ":" + elem[1]); // => "0:Red", "1:Green", "2:Blue" } for (var key of arr.keys()) { console.log(key); // => 0, 1, 2 } for (var value of arr.values()) { console.log(value); // => "Red", "Green", "Blue" }
配列の各要素に対して callback を実行し、callback の戻り値からなる配列を返します。this はコールバック関数の中で this として参照される値です。コールバックの引数には、要素値(value)、要素のインデックス(index)、配列自体(array)が渡されます。下記の例は、配列要素の各要素を2倍にした配列を返します。ES5.1 で定義されたもので、IE9 から利用可能です。
var arr1 = [1, 2, 3, 4, 5];
var arr2 = arr1.map(function(value, index, array) {
return value * 2;
});
console.log(arr2); // => [2, 4, 6, 8, 10]
配列の各要素に対して callback を実行し、最終的なアキュムレータの値を返します。コールバックの引数には、アキュムレータ(acc)、要素値(cur)、要素のインデックス(index)、配列自体(array)が渡されます。reduce() は要素の左から右へ、reduceRight() は右から左へむけて呼び出します。最初にコールバックが呼ばれた時、initial が指定されていればアキュムレータは initial が渡されます。initial が指定されていない場合は一つ目の要素の値がアキュムレータ値となり、二つ目の要素からコールバックが呼ばれます。二回目以降のコールバックでは、アキュムレータには前回のコールバックの戻り値が渡されます。最後のコールバックの戻り値が reduce() の戻り値となります。下記の例は、アキュムレータにそれまでの最大値を覚えておきながら、配列の中の最大値を返却します。ES5.1 で定義されたもので、IE9 から利用可能です。
var arr = [4, 3, 8, 2, 6]; var max = arr.reduce(function(acc, cur, index, array) { console.log(acc, cur, index, array); // => 4 3 1 [4, 3, 8, 2, 6] // => 4 8 2 [4, 3, 8, 2, 6] // => 8 2 3 [4, 3, 8, 2, 6] // => 8 6 4 [4, 3, 8, 2, 6] return (acc < cur) ? cur : acc; }); console.log(max); // => 8
配列の中に elm とマッチする要素が最初に出現するインデックスを返します。見つからない場合は -1 を返します。
var arr = ["Red", "Green", "Blue"]; console.log(arr.indexOf("Red")); // => 0 console.log(arr.indexOf("Green")); // => 1 console.log(arr.indexOf("Blue")); // => 2 console.log(arr.indexOf("Yellow")); // => -1
配列の中に elm とマッチする要素が最後に出現するインデックスを返します。見つからない場合は -1 を返します。
var arr = [3, 5, 8, 5, 1];
console.log(arr.lastIndexOf(5)); // => 3
ES2016(ES7) で追加されたメソッドで、elm にマッチする要素の有無を true/false で返却します。indexOf() よりも直観的に有無を調べることができます。
var arr = ["Red", "Green", "Blue"]; if (arr.indexOf("Green") != -1) { ... } // 古い書き方 if (arr.includes("Green")) { ... } // ES2016以降の新しい書き方
ES5.1 で追加されたメソッドで、value が配列か否かを true/false で返します。
console.log(Array.isArray("ABC")); // false console.log(Array.isArray(["A", "B", "C"]); // true
該当のインデックスの要素が存在するかどうかを調べるには「インデックス in 配列」を用います。
var arr = ["Red", "Green", "Blue"]; console.log(2 in arr); // => true console.log(3 in arr); // => false
every() は配列の各要素に対して callback を実行し、callback の戻り値がすべて真であれば、真を返します。this はコールバック関数の中で this として参照される値です。コールバックの引数には、要素値(value)、要素のインデックス(index)、配列自体(array)が渡されます。下記の例は、配列要素がすべて 80以上であることを確認しています。ES5.1 で定義されたもので、IE9 から利用可能です。
var arr = [89, 87, 93, 65, 88];
var bool = arr.every(function(value, index, array) {
return (value >= 80);
});
console.log(bool); // => false
some() は、callback の戻り値がひとつでも真であれば真を返します。下記の例は、配列要素がひとつでも 90以上であることを確認しています。
var arr = [89, 87, 93, 65, 88];
var bool = arr.some(function(value, index, array) {
return (value >= 90);
});
console.log(bool); // => true
find() は配列の各要素に対して callback を実行し、callback の戻り値が最初に真となった要素の値を返します。this はコールバック関数の中で this として参照される値を必要に応じて指定します。コールバックの引数には、要素値(value)、要素のインデックス(index)、配列自体(array)が渡されます。下記の例は、配列要素の中で最初に見つかった 90以上の要素の値を返します。find() と findIndex() は ES5.1 で追加されました。
var arr = [89, 87, 93, 92, 88];
var value = arr.find((value, index, array) => {
return value >= 90;
});
console.log(value); // => 93
findIndex() は見つかった要素のインデックスを返します。
var arr = [89, 87, 93, 92, 88];
var index = arr.findIndex((value, index, array) => {
return value >= 90;
});
console.log(index); // => 2
findLast() と findLastIndex() は配列を末尾から検索する点が異なります。ES2023 で追加されました。
var arr = [89, 87, 93, 92, 88]; console.log(arr.findLast((value, index, array) => value >= 90)); // => 92 console.log(arr.findLastIndex((value, index, array) => value >= 90)); // => 3
array と array2 を連結した配列を返します。array は変更されません。引数に複数指定することも可能です。
var arr1 = ["Red", "Green"];
var arr2 = ["Blue", "Yellow"];
var arr3 = arr1.concat(arr2);
console.log(arr3); // => ["Red", "Green", "Blue", "Yellow"]
array の各要素の値を separator で連結した文字列を返します。separator を省略した場合は通常カンマ(,)で連結されますが、JavaScript のバージョンによって動作が異なるので省略しない方が無難です。array は変更されません。
var arr = ["2000", "12", "31"];
var str = arr.join("/");
console.log(str); // => "2000/12/31"
ES2022 でサポートされました。配列の n 番目(0~)の要素を取り出します。負数を指定すると最後から数えて n番目(1~)の要素を取り出します。
var arr = ["Red", "Blue", "Green"]; consolg.log(arr.at(0)); // => "red" console.log(arr.at(1)); // => "Blue" console.log(arr.at(-1)); // => "Green"
unshift() は array の先頭に e1, e2, ... の配列要素を加えます。push() は array の最後に配列要素を加えます。戻り値は JavaScript のバージョンによって異なります。
var arr = ["Green"]; arr.unshift("Red"); // => ["Red", "Green"] arr.push("Blue"); // => ["Red", "Green", "Blue"]
shift() は array の最初の要素を削除します。pop() は array の最後の要素を削除します。array 自身が変更されます。戻り値は削除した値となります。
var arr = ["Red", "Green", "Blue"]; arr.shift(); // => ["Green", "Blue"] arr.pop(); // => ["Green"]
0 から数えて、start 番目から n 個の要素を削除し、その代わりに e1, e2, ...を値とする要素を埋め込みます。戻り値は JavaScript のバージョンによって異なります。
var arr = ["A", "B", "C", "D", "E", "F", "G"];
arr.splice(2, 3, "X", "Y", "Z");
console.log(arr); // => ["A", "B", "X", "Y", "Z", "F", "G"]
0 から数えて、start 番目~ end - 1 番目までの要素を抜き出した配列を返します。end を省略した場合は最後までの要素を返します。array は変化しません。
var arr = ["A", "B", "C", "D", "E", "F", "G"];
console.log(arr.slice(2, 4)); // => ["C", "D"]
要素を削除するには delete を用います。この場合、arr[1] は undefined になりますが、arr[0] や arr[2] はそのまま残ります。配列要素を削除するには、array.splice() を用いるのが一般的です。
var arr = ["Red", "Green", "Blue"]; delete arr[1]; console.log(arr); // => ["Red", empty, "Blue"] console.log(arr[0]); // => "Red" console.log(arr[1]); // => undefined console.log(arr[2]); // => "Blue"
配列の各要素に対して callback を実行し、callback の戻り値が真であるものの要素からなる配列を返します。this はコールバック関数の中で this として参照される値です。コールバックの引数には、要素値(value)、要素のインデックス(index)、配列自体(array)が渡されます。下記の例は、配列要素から80以上のものを抜き出しています。ES5.1 で定義されたもので、IE9 から利用可能です。
var arr1 = [89, 87, 93, 65, 88];
var arr2 = arr1.filter(function(value, index, array) {
return (value >= 80);
});
console.log(arr2); // => [89, 87, 93, 88]
array をソートしてその結果の配列を返します。array 自身がソートされます。func で比較関数を指定することも可能です。比較関数では負数、0、正数によって順序を返すようにします。
var arr = [3, 7, 8, 1];
arr.sort();
console.log(arr); // => [1, 3, 7, 8]
ソート関数を指定することもできます。ソート関数では等しければ 0 を、小さければ負の値を、大きければ正の値を返します。下記の例では、大文字・小文字を無視して文字列をソートしています。
function hikaku(a, b) {
var str1 = a.toUpperCase();
var str2 = b.toUpperCase();
if (str1 == str2) { return 0; }
if (str1 > str2) { return -1; }
if (str1 < str2) { return 1; }
}
var arr = ["a", "x", "B", "y", "c", "Z"];
arr.sort(hikaku);
console.log(arr); // => ["a", "B", "c", "x", "y", "Z"]
array を逆順に並べ替えてその結果の配列を返します。array 自身が並べ替えられます。
var arr = ["Red", "Green", "Blue"];
arr.reverse();
console.log(arr); // => ["Blue", "Green", "Red"]
配列を文字列に変換します。
var arr = [1, 2, 3, "A", "B", "C"];
arr.toString(); // => "1,2,3,A,B,C"
配列をロケールに応じた文字列に変換します。
var arr = [1, 'A', new Date('31 Dec 1999 14:59:59 UTC')];
var str = arr.toLocaleString('ja', {timeZone: "Asia/Tokyo"});
console.log(str); // => "1,A,1999/12/31 23:59:59"
arr.toString();
0から数えて start番目から end - 1番目の要素の値を value に置換します。array 自身を書き換えます。start が省略された場合は 0番目から、end が省略された場合は最後までを置換します。ES2015(ES6) で追加された機能で、IE11 ではサポートされていません。
var arr = ["0", "1", "2", "3", "4", "5"];
arr.fill("A", 2, 5);
console.log(arr); // => ["0", "1", "A", "A", "A", "5"]
start番目から end - 1番目の要素を、target 番目からの要素と置き換えます。array 自体を書き換えます。start が省略された場合は 0番目から、end が省略された場合は最後までをコピーします。下記の例では、0から数えて8番目から 10-1=9番目の要素を、2番目からの要素にコピーしています。ES2015(ES6) で追加された機能で、IE11 ではサポートされていません。
var arr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
arr.copyWithin(2, 8, 10);
console.log(arr); // => ["0", "1", "8", "9", "4", "5", "6", "7", "8", "9"]
ES2019(ES10) で追加された機能で、多次元配列を低次元の配列にフラット化します。depth には何次元までの配列をフラット化するかを指定します。
var arr = [[[1, 2], [3, 4]], [5, 6]];
console.log(arr.flat(2)); // => [1, 2, 3, 4, 5, 6]
ES2019(ES10) で追加された機能で、配列に対して map() を行い、結果として得られた多次元配列を flat() でフラット化します。
var arr = ["Blue Green", "Red Yellow"];
console.log(arr.flatMap(x => x.split(" "))); // => ["Blue", "Green", "Red", "Yellow"]
ES2015(ES6)では、分割代入という機能がサポートされました。... を用いることにより z に 10 と 20 の残りの要素である [30, 40, 50] を代入することができます。
[x, y] = [10, 20]; // x=10, y=20 [x, y, ...z] = [10, 20, 30, 40, 50]; // z=[30, 40, 50]
ES2015(ES6)で追加された構文で、配列名に ... をつけることで、配列要素をカンマで連結した構文に展開されます。
args = [10, 20, 30];
func(...args); // func(10, 20, 30)
ES2015(ES6)で追加された機能で、バイナリデータを高速に扱う際などで用いられます。バッファを確保する ArrayBuffer() および、Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array などが定義されています。
var arr = new Uint8Array(4); for (var i = 0; i < 4; i++) { arr[i] = 0x30 + i; } console.log(arr);