为什么减少初始化的X长度数组不起作用?
问题描述:
虽然试图建立X长度的索引对象,我意识到下面的代码是行不通的,但我不能明白为什么它没有:为什么减少初始化的X长度数组不起作用?
Array(X).reduce((acc, curr, index) => {
console.log(acc, curr, index);
return acc;
}, {});
// => Object {}
内console.log
应该为每个打印值迭代(X次),但它看起来像它从未被调用过,结果值就是我们作为参数传递给reduce
方法的initialValue
。
有没有人可以解释为什么reducer不叫?
答
它没有被调用,因为你的数组实际上是空的。
如果传递给Array构造唯一的参数是0和232-1(含)之间的整数 ,这将返回一个新的JavaScript阵列 设置到该号码(注意其长度属性:这意味着一个 阵列arrayLength空槽,不符合实际未定义 值)
插槽,可以这样做:
Array(X).fill().reduce(...)
请参阅Array.fill
doc
所以**不是带有实际未定义值的插槽**是这里的重要部分。事实上,Array(X).fill()。reduce(...)'用'undefined'值填充数组,然后调用reducer X次。谢谢! – ClementParis016