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