【问题标题】:How to add a value in array of JSON objects on javascript?如何在javascript上的JSON对象数组中添加一个值?
【发布时间】:2020-07-02 00:31:24
【问题描述】:

我有一个名为 payment 的数组 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

【问题讨论】:

  • 请问0l 是什么?
  • 什么是payments,什么是amountPaidCents?

标签: javascript json


【解决方案1】:

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)

【讨论】:

  • 您甚至可以通过以下方式消除链中的地图:.reduce((acc, curr) => acc + parseFloat(curr.billed), 0)
【解决方案2】:

您可以使用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}`);

【讨论】:

【解决方案3】:

循环中的每个支付对象都有{ 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 将拥有总数。

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多