JavaScript(ECMAScript)で連番配列を生成するコード片。いわゆる range 関数に相当。
// NG: [undefined, undefined, undefined, undefined, undefined] // { length: 5 } のみ設定されたArrayオブジェクトが生成される // 各要素は未設定(undefinedとも異なる状態)となっている Array(5).map((val, idx) => idx); [,,,,,].map((val, idx) => idx); // OK: [0, 1, 2, 3, 4] Array(5).fill(undefined).map((val, idx) => idx); Array(5).fill(0).map((val, idx) => idx); Array.from(Array(5), (val, idx) => idx); Array.from({length: 5}, (val, idx) => idx); [...Array(5)].map((val, idx) => idx); [...Array(5).keys()];
関連URL
- https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array
- https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax
- arrays - Does JavaScript have a method like "range()" to generate a range within the supplied bounds? - Stack Overflow
- JavaScript "new Array(n)" and "Array.prototype.map" weirdness - Stack Overflow
- JavaScript Array() vs. new Array() – What's the Difference? - Designcise