为什么减少初始化的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

+0

所以**不是带有实际未定义值的插槽**是这里的重要部分。事实上,Array(X).fill()。reduce(...)'用'undefined'值填充数组,然后调用reducer X次。谢谢! – ClementParis016