Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
- トップページ
- JavaScript辞典
- Array.from() / Array.isArray()
Array.from() / Array.isArray()対応: ES6(ECMAScript 2015)
配列を生成・判定するための静的メソッドです。『Array.from()』は配列風のオブジェクトから配列を作成し、『Array.isArray()』は値が配列かどうかを判定します。
構文
// 配列風オブジェクトやイテラブルから配列を作成します。 var arr = Array.from(配列風オブジェクト, マッピング関数); // 値が配列かどうかを判定します。 var result = Array.isArray(値); // 引数を要素として配列を作成します。 var arr = Array.of(要素1, 要素2, ...);
メソッド一覧
| メソッド | 概要 |
|---|---|
| Array.from(対象, 関数) | 配列風オブジェクトやイテラブルから新しい配列を作成します。第2引数にマッピング関数を指定すると、各要素を変換しながら配列を作成できます。 |
| Array.isArray(値) | 指定した値が配列であれば『true』、そうでなければ『false』を返します。 |
| Array.of(要素1, 要素2, ...) | 引数に指定した値を要素として新しい配列を作成します。『new Array()』と異なり、数値を1つ渡しても配列の長さとして扱われません。 |
サンプルコード
// 文字列から配列を作成します。
var chars = Array.from("Hello");
console.log(chars); // 『H,e,l,l,o』と出力されます。
// NodeListを配列に変換します。
var items = document.querySelectorAll("li");
var arr = Array.from(items);
console.log(Array.isArray(arr)); // 『true』と出力されます。
// マッピング関数で変換しながら配列を作成します。
var numbers = Array.from([1, 2, 3], function(n) {
return n * 10;
});
console.log(numbers); // 『10,20,30』と出力されます。
// 連番の配列を作成します。
var range = Array.from({ length: 5 }, function(_, i) {
return i + 1;
});
console.log(range); // 『1,2,3,4,5』と出力されます。
// Array.isArrayで型を判定します。
console.log(Array.isArray([1, 2, 3])); // 『true』と出力されます。
console.log(Array.isArray("abc")); // 『false』と出力されます。
console.log(Array.isArray({ length: 3 })); // 『false』と出力されます。
// Array.of()で配列を作成します。
console.log(Array.of(3)); // 『3』と出力されます。要素が3の配列です。
console.log(new Array(3)); // 『,,』と出力されます。長さ3の空の配列です。
実行結果
["H", "e", "l", "l", "o"] // Array.from("Hello")
true // Array.isArray(arr)
[10, 20, 30] // Array.from + マッピング
[1, 2, 3, 4, 5] // Array.from + length。連番の生成です。
true // Array.isArray([1, 2, 3])
false // Array.isArray("abc")
false // Array.isArray({ length: 3 })
[3] // Array.of(3)。要素が3の配列です。
[empty x 3] // new Array(3)。長さ3の空の配列です。
概要
『Array.from()』『Array.isArray()』『Array.of()』はいずれも『Array』コンストラクタの静的メソッドです。インスタンスではなく『Array』に直接呼び出す点が、『配列.push()』や『配列.map()』のようなインスタンスメソッドとは異なります。
『Array.from()』は『document.querySelectorAll()』が返す『NodeList』のように、配列に似ているが配列のメソッドが使えないオブジェクトを本物の配列に変換する際に特に便利です。変換後は『配列.forEach()』や『配列.filter()』などすべての配列メソッドが使用可能になります。『{ length: n }』を渡して連番の配列を作るテクニックも実務でよく使われます。
『Array.isArray()』は値が配列かどうかを確実に判定できる唯一の方法です。『typeof []』は『"object"』を返すため、typeofでは配列とオブジェクトを区別できません。配列かどうかの判定には必ず『Array.isArray()』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。