配列のコンストラクタArray()
を使用してn
の長さの配列をすばやく作成してから、結果の配列をループしたいと考えています。 MDN's docs当たりfor eachループを使用する配列(n)、未定義の値の配列
:
Arrayコンストラクタに渡される唯一の引数は、0と2 -1(含む)の整数 ある場合、これはに設定された長さと新しいJavaScript配列 を返しますその番号。引数が他の数値の場合は、 RangeError例外がスローされます。
おそらくArray(5)
を実行すると、長さ5の配列が作成されます。
var arr = new Array(5);
console.log(arr); // [undefined x 5]
console.log(arr.length); // 5
私は結果の配列をループに試してみて、値またはインデックスをログアウトするときしかし、何も起こりません。私は、配列リテラルを使用し、値をループしようとした場合
arr.forEach(function(v, i) { console.log(v, i); });
// nothing logs to the console
あるいは、それは予想通り記録します:
[undefined, undefined].forEach(function(v, i) { console.log(v, i); });
// undefined 0
// undefined 1
できないのはなぜIループオーバーArrayコンストラクタで作成された配列?
This answer、map
で発生し、ブラウザのストレンジネスのいくつかを説明します例:
arr.map(function(v, i) { return i; }) // returns [undefined x 5]
しかし、私はforEach
ループは全くオーバーを反復しない理由で特に興味値。
arr.forEach(functio(v, i) {
使用この代わりに::
arr.forEach(function(v, i) {
UPDATE
のforEach()各要素に対して一度に提供するコールバックを実行
'[,,]のforEach(console.log.bind(コンソール、 'ログイン:'))'も –
:)壊れしかし 'Array.apply(nullは、新しいと思われます[OK] –
これは[JavaScript "new Array(n)"と "Array.prototype.map" weirdness]と同じです(http:// stackoverflow .com/q/5501581/1529630)、 'forEach'を使用します。 – Oriol