数组地图跳过元素

时间:2014-08-27 03:15:43

标签: javascript

我试图生成一个数组。这是我遇到问题的简化摘录:

//should return an array with 10 elements with values of 0
var arr = Array(10).map(function() {return 0;});

console.log(arr.length); //returns 10
console.log(arr); //empty array

我了解使用Array(length)会返回一个数组,其length元素设置为undefined。我怀疑.map()正在跳过undefined个元素,但我不是100%肯定它。

我可以做些什么来获得预期的结果?我知道我可以通过循环完成同样的事情,但如果可能,我真的想使用.map()

- 更新 -

任何人都可以解释为什么会这样吗?

var arr = Array(10).join().split(',').map(function() {return 0;});

-edit-忽略更新。我弄清楚它为什么会起作用。

1 个答案:

答案 0 :(得分:0)

Array.apply可以接受一个可以具有属性长度并基于它的对象,在其中推送undefined个长度。

例如:

Array.apply(null, {length: 10});

这解释了为什么你也可以使用cookie monster的建议:

Array.apply(null, Array(10));

因为Array(10)将按预期创建值为10的属性长度。