如何对两个JSON对象的键值进行求和?

8
"bills": [
    {
        "refNo": 17,
        "billDate": "1-apr-2016",
        "dueDate": "30-apr-2016",
        "pendingAmount": 4500,
        "overdueDays": 28
    },
    {
        "refNo": 20,
        "billDate": "15-apr-2016",
        "dueDate": "3-may-2016",
        "pendingAmount": 56550,
        "overdueDays": 15
    }
]

我想对"pendingAmount"字段进行求和。 它应该返回像pendingAmount: 61050这样的结果。

5个回答

15
您可以使用Array#map,然后使用Array#reduce来展开您的对象,然后求和映射结果:
bills.map(bill => bill.pendingAmount).reduce((acc, amount) => acc + amount);

这是一段代码片段:

var bills = [
          {
            "refNo": 17,
            "billDate": "1-apr-2016",
            "dueDate": "30-apr-2016",
            "pendingAmount": 4500,
            "overdueDays": 28
          },
          {
            "refNo": 20,
            "billDate": "15-apr-2016",
            "dueDate": "3-may-2016",
            "pendingAmount": 56550,
            "overdueDays": 15
          }
        ];
var res = bills.map(bill => bill.pendingAmount).reduce((acc, amount) => acc + amount);
console.log(res)

希望这能有所帮助,

最好的问候,


6
reduce() 方法将一个函数应用于累加器和数组中的每个元素(从左到右)以将其缩减为单个值。

var bills = [
          {
            "refNo": 17,
            "billDate": "1-apr-2016",
            "dueDate": "30-apr-2016",
            "pendingAmount": 4500,
            "overdueDays": 28
          },
          {
            "refNo": 20,
            "billDate": "15-apr-2016",
            "dueDate": "3-may-2016",
            "pendingAmount": 56550,
            "overdueDays": 15
          }
        ];
        
        
      var result = bills.reduce(function(_this, val) {
          return _this + val.pendingAmount
      }, 0);

    console.log(result)
    //61050 answer


0
您可以使用以下代码片段:
var sum = JSON.parse(bills).reduce(function(acc, val){
  return acc.pendingAmount + val.pendingAmount;
}, {pendingAmount: 0});

它在解析JSON后使用array.prototype.reduce()函数。reduce的第二个参数是传递给reduce函数的初始值。

1
也许这段代码可以解决问题。在您的答案中添加适当的描述。 - NarendraR

0
一行带有ES2015解构的代码:
json.bills.reduce(({pendingAmount: a}, {pendingAmount: b})=> a+b)

-1
使用这个:
let sum, billsPOJO;

billsPOJO = YOURJSON.bills;

sum = 0;

for (let i = 0; billsPOJO.length; i++) {
 sum += billsPOJO[i].pendingAmount; 
}

有很多工作要做。如果JS主要是ES6,为什么不使用简写和一行代码的方式来实现呢! - TalESid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接