配列(Array)

[up] [prev] [next]

一覧

Array(), concat(), delete, for (...), forEach(), from(), includes(), isArray(), join(), length, of(), pop(), push(), reverse(), shift(), slice(), sort(), splice(), unshift()

配列

array = new Array()
array = new Array(n)
array = new Array(e1, e2, ...)
array = [e1, e2, ...]

n 個の要素を持つ配列、もしくはe1, e2, ...を要素とする配列を作成します。配列のインデックスは 0 から始まります。昔は data = new Array("Red", "Green", "Blue") の様な書き方をしていましたが、現在では data = ["Red", "Green", "Blue"] の表記が一般的です。

JavaScript
var data = ["Red", "Green", "Blue"];
console.log(data);                     // => ["Red", "Green", "Blue"]
console.log(data[0]);                  // => "Red"
console.log(data[1]);                  // => "Green"
console.log(data[2]);                  // => "Blue"

以下のようにして2次元配列も扱うことができます。

JavaScript
var data = [];
for (i = 0; i > 3; i++) {
  data[i] = [];
  for (j = 0; j > 4; j++) {
    data[i][j] = i * 100 + j;
  }
}
console.log(data[2][3]);                  // => 203

該当のインデックスの要素が存在するかどうかを調べるには「インデックス in 配列」を用います。

JavaScript
var data = ["Red", "Green", "Blue"];
console.log(2 in data);                  // => true
console.log(3 in data);                  // => false
◆ Array.from(arrayLike[, mapFunc, [thisArg]])

ES2015(ES6) から追加されたもので、String, Set, Map などの配列ライクなオブジェクトや反復可能オブジェクト arrayLike から新しい配列を作成します。

JavaScript
var str = "ABC";
var data1 = Array.from(str);
console.log(data1);                  // => ["A", "B", "C"]

var set = new Set([123, "ABC"]);
var data2 = Array.from(set);
console.log(data2);                  // => [123, "ABC"]

var map = new Map([[1, 2], [2, 4], [4, 8]]);
var data3 = Array.from(map);
console.log(data3);                  // => [[1, 2], [2, 4], [4, 8]]

mapFunc は、配列を作成する際に各要素に対して実行されるマップ関数です。thisArg にはマップ関数で this で参照される値を指定します。

JavaScript
var data = Array.from([1, 2, 3], function(x) { return(x * 2); });
console.log(data);                  // => [2, 4, 6]
◆ Array.of(e1, e2, ...)

ES2015 で追加されたメソッドで、可変引数 e1, e2 ... を受け取り、新しい配列を作成します。

JavaScript
var data = Array.of(1, 2, 3);
console.log(data);                  // => [1, 2, 3]

new Array() とほぼ同じ動作ですが、引数が単一の数値の場合、new Array() は指定個数分の undefined 配列を返すのに対し、Array.of() は常に引数の個数分の要素を持つ配列を返します。

JavaScript
var data1 = new Array(3);
console.log(data1);                  // => [undefined, undefined, undefined]

var data2 = Array.of(3);
console.log(data2);                  // => [3]

配列の長さ

array.length

配列要素の個数を得るには length プロパティを参照します。

JavaScript
var data = ["Red", "Green", "Blue"];
console.log(data.length);                  // => 3

length に 0 を代入することで、配列の要素をすべて削除することができます。

JavaScript
data.length = 0;

配列のループ

◆ for (...)

下記の様にして配列の各要素に対して処理を行うことができます。

JavaScript
var data = ["Red", "Green", "Blue"];
for (var i = 0; i < data.length; i++) {
    console.log(data[i]);
}

下記の様に記述することもできます。

JavaScript
var data = ["Red", "Green", "Blue"];
for (var i in data) {
    console.log(data[i]);
}
array.forEach (...)

forEach(function) は配列の各要素を引数にして function を実行します。

JavaScript
var data = ["Red", "Green", "Blue"];
data.forEach(function(elem) {
    console.log(elem);
});

配列の検査

array.indexOf(e1)

配列の中に e1 とマッチする要素が最初に出現するインデックスを返します。見つからない場合は -1 を返します。

JavaScript
var data = ["Red", "Green", "Blue"];
console.log(data.indexOf("Red"));       // => 0
console.log(data.indexOf("Green"));     // => 1
console.log(data.indexOf("Blue"));      // => 2
console.log(data.indexOf("Yellow"));    // => -1
array.includes(e1)

ES2016(ES7) では、要素にマッチするものの有無を true/false で返却する includes() がサポートされました。indexOf() よりも直観的に有無を調べることができます。

JavaScript
var data = ["Red", "Green", "Blue"];

if (data.indexOf("Green") != -1) { ... }     // 古い書き方
if (data.includes("Green")) { ... }          // ES2016以降の新しい書き方
◆ Array.isArray(value)

isArray() は ES5.1 で追加されたメソッドで、value が配列か否かを true/false で返します。

JavaScript
console.log(Array.isArray("ABC"));           // false
console.log(Array.isArray(["A", "B", "C"]);  // true

配列の連結

array.concat(array2, ...)

arrayarray2 を連結した配列を返します。array は変更されません。引数に複数指定することも可能です。

JavaScript
var data1 = ["Red", "Green"];
var data2 = ["Blue", "Yellow"];
var data3 = data1.concat(data2);
console.log(data3);              // => ["Red", "Green", "Blue", "Yellow"]
array.join([separator])

array の各要素の値を separator で連結した文字列を返します。separator を省略した場合は通常カンマ(,)で連結されますが、JavaScript のバージョンによって動作が異なるので省略しない方が無難です。array は変更されません。

JavaScript
var data = ["2000", "12", "31"];
var str = data.join("/");
console.log(str);              // => "2000/12/31"

配列要素の取り出しと追加

array.unshift(e1, e2, ...) (N4)
array.push(e1, e2, ...) (N4)

unshift() は array の先頭に e1, e2, ... の配列要素を加えます。push() は array の最後に配列要素を加えます。戻り値は JavaScript のバージョンによって異なります。

JavaScript
var data = ["Red", "Green"];
data.push("Blue");
data.push("Yellow");
console.log(data);              // => ["Red", "Green", "Blue", "Yellow"]
array.shift() (N4)
array.pop() (N4)

shift() は array の最初の要素を削除します。pop() は array の最後の要素を削除します。array 自身が変更されます。戻り値は削除した値となります。

array.splice(start, n, e1, e2, ...) (N4)

0 から数えて、start 番目から n 個の要素を削除し、その代わりに e1, e2, ...を値とする要素を埋め込みます。戻り値は JavaScript のバージョンによって異なります。

JavaScript
var data = ["A", "B", "C", "D", "E", "F", "G"];
data.splice(2, 3, "X", "Y", "Z");
console.log(data);              // => ["A", "B", "X", "Y", "Z", "F", "G"]
array.slice(start [, end])

0 から数えて、start 番目~ end - 1 番目までの要素を抜き出した配列を返します。end を省略した場合は最後までの要素を返します。array は変化しません。

JavaScript
var data = ["A", "B", "C", "D", "E", "F", "G"];
console.log(data.slice(2, 4));    // => ["C", "D"]
◆ delete array[n]

要素を削除するには delete を用います。この場合、data[1] は undefined になりますが、data[0] や data[2] はそのまま残ります。配列要素を削除するには、array.splice() を用いるのが一般的です。

JavaScript
var data = ["Red", "Green", "Blue"];
delete data[1];
console.log(data);                     // => ["Red", empty, "Blue"]
console.log(data[0]);                  // => "Red"
console.log(data[1]);                  // => undefined
console.log(data[2]);                  // => "Blue"

配列の並べ替え

array.sort([func])

array をソートしてその結果の配列を返します。array 自身がソートされます。func で比較関数を指定することも可能です。比較関数では負数、0、正数によって順序を返すようにします。

JavaScript
var data = [3, 7, 8, 1];
data.sort();
console.log(data);                  // => [1, 3, 7, 8]

ソート関数を指定することもできます。ソート関数では等しければ 0 を、小さければ負の値を、大きければ正の値を返します。下記の例では、大文字・小文字を無視して文字列をソートしています。

JavaScript
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 data = ["a", "x", "B", "y", "c", "Z"];
data.sort(hikaku);
console.log(data);           // => ["a", "B", "c", "x", "y", "Z"]
array.reverse()

array を逆順に並べ替えてその結果の配列を返します。array 自身が並べ替えられます。

JavaScript
var data = ["Red", "Green", "Blue"];
data.reverse();
console.log(data);           // => ["Blue", "Green", "Red"]

[up] [prev] [next]
Copyright (C) 1996-2019 杜甫々
改訂版初版:2001年5月20日、最終更新:2019年2月17日
http://www.tohoho-web.com/js/array.htm