这纯粹是 JavaScript 的灵 active 练习。我正在尝试使用 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
感谢您的见解:)
最佳答案
主要是为了内存空间优化的目的,稀疏数组占用的内存空间更少。
它是一种未定义的“标志”,这样您就可以在不占用内存空间的情况下执行此类操作:
var a = [];
a[2014] = 0;
console.log(a.length); // 2015
console.log(a); // [undefined x 2014, 0]
关于javascript - 为什么 Array.map 似乎不适用于未定义值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27650959/