【问题标题】:Reduce with condition in array js减少数组js中的条件
【发布时间】:2021-03-08 05:30:01
【问题描述】:

我遇到了过滤器和减少的问题。 只有当“A”等于 2020 时,我才需要得到“smc”的总和。 这是我的数组:

arr = [{A:2020, smc:1},{A:2020, smc:2}, {A:2021, smc:3}]

我尝试过类似的方法:

arr.filter(e=> e.A===2020).reduce((sum, iter) => sum + iter.smc)

但它似乎不起作用。 任何想法为什么? 谢谢

【问题讨论】:

    标签: javascript node.js arrays filter reduce


    【解决方案1】:

    您需要将第二个参数作为0 传递给reduce(),这将成为sum 的初始值。

    arr.filter(e=> e.A===2020).reduce((sum, iter) => sum + iter.smc, 0)
    

    您也可以删除 filter() 使用 reduce() 仅与三元运算符

    const arr = [{A:2020, smc:1},{A:2020, smc:2}, {A:2021, smc:3}];
    let res = arr.reduce((ac, {smc, A}) => ac + (A === 2020 ? smc : 0), 0);
    console.log(res)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 2016-02-28
      • 2022-01-06
      • 2017-12-25
      • 2021-02-02
      • 1970-01-01
      • 2017-10-02
      相关资源
      最近更新 更多