[英]How to group and add their value in array of objects in javascript?
[英]How to add a value in array of JSON objects on javascript?
我有一个名为支付的数组 json 对象
[ { billed : "100", owed: "50" }, { billed : "200", owed: "100" }]
我想总结“计费”字段,净答案应该是 300。我尝试了以下操作:
let paidPaymentCents = 0;
for (let payment in payments) {
paidPaymentCents += payments[payment].billed;
}
有没有更好的方法使用 reduce : https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
JavaScript 的reduce()就是这个方法。 一旦解析了JSON
并且您有一个数组或对象:
let testAry = [{ billed : "100", owed: "50" }, { billed : "200", owed: "100" }],
amt = testAry
// 1. isolate and parse
.map(item => parseFloat(item.billed))
// 2. add up all billed
.reduce((a, b) => a + b, 0);
console.log(amt)
根据数据的一致性,您可能希望使用Number
而不是parseFloat
。 更多信息: parseFloat vs Number
你可以让它更小(感谢@Devon):
.reduce((acc, curr) => acc + parseFloat(curr.billed), 0)
使用Array.prototype.reduce
可以很容易地做到这一点。 在reduce 中,您可以将每个element.billed
用Number
包裹起来,将其视为一个数字实例。 您将从0
作为累加器开始并添加每个element.billed
以获得总数。 下面是一个例子:
const data = [{ billed: "100", owed: "50" }, { billed: "200", owed: "100" }]; const total = data.reduce((runningTotal, element) => { runningTotal += Number(element.billed); return runningTotal; }, 0); console.log(`Total billed amount is ${total}`);
循环中的每个支付对象都具有结构{ billed : "100", owed: "50" }
所以你可以做
let payments = [ { billed : "100", owed: "50" }, { billed : "200", owed: "100" }]
let paidPaymentCents = 0;
for (var i = 0;i < payments.length; i++) {
paidPaymentCents += Number(payments[i].billed);
}
并且您将拥有paidPaymentCents
将拥有总数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.