[英]How total an array of items?
我有以下數組結構:
let val = [
{
currentYear:'11',
lastYear:'12',
name:'Bert',
type:'+'
},
{
currentYear:'2',
lastYear:'4',
name:'Ed',
type:'-'
}
]
我試圖根據類型總計數字字段。 當類型為'+'時,我添加項目,' - '減去。 那么函數的結果應該是:
{
currentYear:9,
lastYear:8
}
Sofar我想出了這個:
const sums = val.reduce((acc, item) => {
Object.entries(item)
.filter(([_, v]) => !isNaN(v))
.forEach(([k, v]) => acc[k] = (acc[k] || 0) + Number(v));
return acc;
}, {});
我根本不知道如何根據類型添加或減去?
您可以使用reduce
並將currentYear
或lastYear
乘以(type === '+' ? 1 : -1)
:
let val = [{ currentYear: '11', lastYear: '12', name: 'Bert', type: '+' }, { currentYear: '2', lastYear: '4', name: 'Ed', type: '-' } ]; const total = val.reduce((a, { currentYear, lastYear, type }) => { const mult = type === '+' ? 1 : -1; a.currentYear += mult * currentYear; a.lastYear += mult * lastYear; return a; }, { currentYear: 0, lastYear: 0}); console.log(total);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.