为什么Array.map似乎不适用于未定义值的数组

时间:2014-12-25 21:44:36

标签: javascript arrays

这纯粹是一种使用JavaScript的灵活性练习。我试图用Javascript创建一个整数数组,没有循环,并以这种特殊的方式:

var a = Array(100).map(function(x, y) { return y + 1 });

我希望和整数数组1 - 100.相反它仍然未定义* 100?我甚至不能在map函数中调用console.log?

我从这篇伟大的帖子Sequences using JavaScript Array中了解到,下面的内容确实使用了Array.apply来完成目标,我只是理解为什么需要它?

var a = Array.apply(0, Array(100)).map(function(x,y) { return y + 1 }); a

感谢您的任何见解:)

1 个答案:

答案 0 :(得分:1)

它主要用于内存空间优化,稀疏数组在内存中占用的空间较少。

各种"标志"使用undefined以便您可以在不爆炸内存空间的情况下执行此类操作:

var a = [];

a[2014] = 0;
console.log(a.length); // 2015
console.log(a); // [undefined x 2014, 0]