我在过滤和减少方面遇到了问题。只有当“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)但它似乎不起作用。任何想法为什么?谢谢
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
您需要传递第二个参数作为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)
添加回答
举报
0/150
提交
取消