【发布时间】:2016-07-02 16:47:33
【问题描述】:
我有一个指定长度的数组,我试图用依赖于每个索引的值填充它。
let arr = new Array(someLength)
arr.map((v, i) => i * 2)
据我所知,这不起作用,因为 map 跳过 未定义的值。
我有几个问题:
- 为什么
map可以处理[undefined, undefined]之类的东西? -
有没有办法使用 ES6 数组方法来实现这一点?
我知道我可以使用标准的
for循环,但想知道是否有 更好的 方法来做到这一点。for (let i = 0; i < arr.length; i++) { arr[i] = i * 2 }到目前为止,我找到了一种方法,但它并不是很干净。
arr = arr.fill(undefined).map((foo, i) => i * 2)
【问题讨论】:
-
你用every()试过什么了吗?
-
.map()不会跳过未定义的值;它会跳过未定义的属性/成员。 -
[...Array(someLength)].map((_, i) => i * 2)是另一种可能性。 -
更正确的说法是
map跳过了missing 元素或holes。对了,不用说fill(undefined)——只要fill()就可以了。
标签: javascript arrays ecmascript-6 undefined