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

标签 javascript arrays

这纯粹是 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/

相关文章:

javascript - 在react中导入和导出模块

javascript - 自定义 HTML 复选框标签

javascript - 如何将.csv 中的数据加载到数据表中?

Java - 需要有关 JSON 数组/对象和验证的帮助

javascript - 使用鼠标按下的持续时间进行滚动

javascript - 如何根据屏幕尺寸调整横幅

arrays - 在对数时间内搜索未排序的数组

arrays - 使用 reserveCapacity 向后快速填充数组

C - 如何对一维数组中的数字进行分组排序?

arrays - java.sql.SQLException : Non supported character set: oracle-character-set-178