[英]How to sum two arrays data in JavaScript
您不僅需要balance
屬性,還需要在payments
數組中添加每個balance
屬性。 您可以使用reduce
非常簡潔地進行此操作,將外部balance
作為累加器的初始值傳遞:
const obj = { accounts: [{ balance: 150000, payments: [{ balance: 100000, }, { balance: -200000, } ] }] }; const total = obj.accounts.reduce((a, { balance, payments }) => ( a + payments.reduce((accum, { balance }) => accum + balance, balance) ), 0); console.log(total);
或者,以對象方法形式:
const obj = { calculateTotal() { return obj.accounts.reduce((a, { balance, payments }) => ( a + payments.reduce((accum, { balance }) => accum + balance, balance) ), 0) }, accounts: [{ balance: 150000, payments: [{ balance: 100000, }, { balance: -200000, } ] }] }; console.log(obj.calculateTotal());
你可以試試這個嗎?
calculateTotal: function(){
var sum=0;
for(var i=0;i<this.accounts.length;i++){
sum += this.accounts[i].balance;
// iterate over payments sub array in each account and add balance into the sum
for(var j=0;j<this.accounts[i].payments.length;j++){
sum += this.accounts[i].payments[j].balance;
}
}
return sum;
},
我只是嘗試制作一種更通用的解決方案類型來計算一個給定的鍵,該鍵可以嵌套到任意數量的數組或對象中。
summarize = (obj, sum_key) => {
var sum = 0;
for ( key in obj ) {
if (key == sum_key) {
sum += obj[key];
} else if (typeof obj[key] == 'object' && obj[key]) {
sum += summarize(obj[key]);
}
}
return sum;
};
現在,您可以通過以下方式獲得所需的總和:
summarize(data, 'balance');
在這種情況下使用reduce
sumOfPaymentBalance = accounts.payments.reduce((sum,currentValue)=>
(sum+currentValue.balance),0);
mainBalance = accounts.reduce(sum,paymentValue=>(sum,paymentValue.balance),0);
sumOfPaymentBalance += mainBalance;
console.log(sumOfBalance);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.