【问题标题】:Why reducing an initialized Array of X length doesn't work?为什么减少 X 长度的初始化数组不起作用?
【发布时间】:2017-05-28 19:12:35
【问题描述】:

在尝试构建 X 长度的索引对象时,我意识到以下代码不起作用,但我不明白为什么它不起作用:

Array(X).reduce((acc, curr, index) => {
    console.log(acc, curr, index);
    return acc;
}, {});
// => Object {}

内部console.log 应该打印每次迭代(X 次)的值,但它看起来从未被调用过,结果值只是我们作为参数传递给reduce 方法的initialValue

谁能解释一下为什么不调用reducer?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    它没有被调用,因为你的数组实际上是空的。

    如果传递给 Array 构造函数的唯一参数是整数 在 0 和 232-1(含)之间,这将返回一个新的 JavaScript 数组 其长度属性设置为该数字(注意:这意味着 arrayLength 空槽数组,不是实际未定义的槽 价值观)

    你可以这样做:

    Array(X).fill().reduce(...)
    

    Array.fill文档

    【讨论】:

    • 所以 不是具有实际未定义值的插槽 是这里的重要部分。实际上,Array(X).fill().reduce(...)undefined 值填充数组,然后调用减速器 X 次。谢谢!
    猜你喜欢
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    相关资源
    最近更新 更多