← 返回首页
Array.of() - JavaScript | MDN

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Array.of()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年9月以降、すべてのブラウザーで利用可能です。

Array.of() 静的メソッドは、引数の数や型にかかわらず、可変長引数から、新しい Array インスタンスを生成します。

目次

試してみましょう

console.log(Array.of("foo", 2, "bar", true)); // 予想される結果: Array ["foo", 2, "bar", true] console.log(Array.of()); // 予想される結果: Array []

構文

js
Array.of() Array.of(element1) Array.of(element1, element2) Array.of(element1, element2, /* …, */ elementN)

引数

element1, …, elementN

生成する配列の要素。

返値

新しい Array インスタンス。

解説

Array.of() と Array() コンストラクターの違いは整数引数の扱いにあります。 Array.of(7) は単一の要素、7 を持つ配列を作成しますが、 Array(7) は length プロパティが 7 の空の配列を作成します(これは undefined の値を持つ実在のスロットではなく、7 つの空のスロットの配列を意味します)。

js
Array.of(7); // [7] Array(7); // 7 つの空スロットの配列 Array.of(1, 2, 3); // [1, 2, 3] Array(1, 2, 3); // [1, 2, 3]

Array.of() メソッドは汎用ファクトリーメソッドです。例えば、 Array のサブクラスが of() メソッドを継承した場合、継承した of() メソッドは Array インスタンスではなく、サブクラスの新しいインスタンスを返します。実際には、 this 値には新しい配列の長さを表す単一の引数を受け入れる任意のコンストラクター関数を指定することができ、コンストラクターは of() に渡された引数の数だけ呼び出されます。最終的な length は、すべての要素が代入されたときに再度設定されます。もし this の値がコンストラクター関数でない場合、代わりにプレーンな Array コンストラクターが使用されます。

Array.of() の使用

js
Array.of(1); // [1] Array.of(1, 2, 3); // [1, 2, 3] Array.of(undefined); // [undefined]

配列以外のコンストラクターに対する of() の呼び出し

of() メソッドは、新しい配列の長さを表す単一の引数を受け入れるコンストラクター関数で呼び出すことができます。

js
function NotArray(len) { console.log("NotArray called with length", len); } console.log(Array.of.call(NotArray, 1, 2, 3)); // NotArray called with length 3 // NotArray { '0': 1, '1': 2, '2': 3, length: 3 } console.log(Array.of.call(Object)); // [Number: 0] { length: 0 }

this の値がコンストラクターでない場合は、プレーンな Array オブジェクトを返します。

js
console.log(Array.of.call({}, 1)); // [ 1 ]

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-array.of

ブラウザーの互換性

ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。

関連情報