6 javascript arrays ecmascript-6
假设您新建了一个包含 1,000 个元素的数组,并希望使用 指定每个元素的索引作为元素的值.map()
。我希望它像这样工作:
new Array(1000).map((element, i) => i);
Run Code Online (Sandbox Code Playgroud)
问题是:尽管将 的返回值指定.map()
为数组索引,但返回的新数组虽然具有所需的 1,000 个元素,但却是空的。这可以通过像这样的链接来解决.fill(0)
:
new Array(1000).fill(0).map((element, i) => i);
Run Code Online (Sandbox Code Playgroud)
为什么需要.map
或.filter
需要填充数组来生成填充数组?
这主要是因为即使使用未定义的指针,也必须填充数组才能进行迭代。有了new Array()
它就不是了。
来自MDC(重点是我的):“map 按顺序为数组中的每个元素调用一次提供的回调函数,并根据结果构造一个新数组。仅对已分配值的数组索引调用回调;它不会为已删除或从未赋值的索引调用。”
根据该线程已接受答案的第一条评论:
JavaScript“new Array(n)”和“Array.prototype.map”怪异
归档时间: |
|
查看次数: |
2780 次 |
最近记录: |