减少数组js中的条件

Reduce with condition in array js

我在过滤和减少方面遇到了问题。 只有当“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)

但是好像不行。 任何想法为什么? 谢谢

您需要将第二个参数作为 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)