簡體   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