JavaScript で配列の長さを初期化するにはどうすればいいですか? 質問する

JavaScript で配列の長さを初期化するにはどうすればいいですか? 質問する

私が読んだJavaScriptの配列に関するチュートリアルのほとんど(w3学校そしてデヴグル) は、構文を使用して Array コンストラクターに整数を渡すことで、特定の長さの配列を初期化できることを示唆していますvar test = new Array(4);

この構文をjsファイルで多用した後、ファイルの1つをjsLint、そしてそれはパニックになりました:

エラー: 1 行目の 22 文字目に問題があります: ')' が期待されましたが、代わりに '4' が表示されました。var
test = new Array(4);
1 行目の 23 文字目に問題があります: ';' が期待されましたが、代わりに ')' が表示されました。var
test = new Array(4);
1 行目の 23 文字目に問題があります: 識別子が期待されましたが、代わりに ')' が表示されました。

読み終えた後jsLint の動作の説明jsLint は構文をあまり好まないようでnew Array()、代わりに[]配列を宣言するときに好むようです。

そこでいくつか質問があります。

まず、なぜでしょうか? 代わりに構文を使用すると、リスクはありますかnew Array()? 注意すべきブラウザの非互換性はありますか?

次に、角括弧構文に切り替えた場合、配列を宣言してその長さをすべて 1 行で設定する方法はありますか。それとも、次のようにする必要がありますか。

var test = [];
test.length = 4;

ベストアンサー1

  • Array(5)長さ 5 の配列が生成されますが、値が含まれていないため、反復処理はできません。

  • Array.apply(null, Array(5)).map(function () {})長さ 5 で値が undefined の配列が生成され、反復処理が可能になります。

  • Array.apply(null, Array(5)).map(function (x, i) { return i; })長さ 5、値 0、1、2、3、4 の配列が生成されます。

  • Array(5).forEach(alert)何もせず、Array.apply(null, Array(5)).forEach(alert)5つのアラートを表示します

  • ES6私たちに与えてくれるArray.fromので、今ではあなたも使うことができますArray.from(Array(5)).forEach(alert)

  • 特定の値で初期化したい場合は、これらを知っておくと便利です...
    Array.from('abcde')Array.from('x'.repeat(5))
    またはArray.from({length: 5}, (v, i) => i) // gives [0, 1, 2, 3, 4]

おすすめ記事