参见英文答案 >
Undefined values in Array(len) initializer4个
我想创建具有固定长度的空数组,然后使用.map返回新数组.但是,它没有按预期工作.
我想创建具有固定长度的空数组,然后使用.map返回新数组.但是,它没有按预期工作.
根据mdn docs:
If the only argument passed to the Array constructor is an integer between 0 and 232-1 (inclusive),this returns a new JavaScript array with length set to that number.
new Array(3)返回[undefined×3].不应该是:[未定义,未定义,未定义]?
让我们考虑以下示例:
1)不工作.
var a = new Array(3); a.map((x,i) => i); // [undefined × 3]
2)工作.
var a = Array.apply(null,new Array(3)); a.map((x,i) => i); // [0,1,2]
我在最新的Google Chrome Canary上测试了这个.
解决方法
从
MDN开始:这将返回一个长度设置为该数字的新JavaScript数组
由新Array(n)创建的Array没有任何元素,只有一个长度.这就是为什么你不能映射(不存在)元素.