繁体   English   中英

如何在 javascript 上的 JSON 对象数组中添加一个值?

[英]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.billedNumber包裹起来,将其视为一个数字实例。 您将从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM