在尝试构建X长度的索引对象时,我意识到以下代码无法正常工作,但我无法理解为什么它没有:&/ t>
Array(X).reduce((acc, curr, index) => {
console.log(acc, curr, index);
return acc;
}, {});
// => Object {}
内部console.log
应该为每次迭代打印值(X次),但看起来它从未被调用过,结果值只是我们作为参数传递给initialValue
的值reduce
方法。
有没有人可以解释为什么没有调用减速器?
答案 0 :(得分:2)
没有调用它,因为你的数组实际上是空的。
如果传递给Array构造函数的唯一参数是整数 在0到232-1(含)之间,这将返回一个新的JavaScript数组 将其length属性设置为该数字(注意:这意味着一个 arrayLength空插槽数组,不是实际未定义的插槽 值强>)
你可以这样做:
Array(X).fill().reduce(...)
请参阅Array.fill
doc