以不同长度的javascript添加数组的对象

时间:2018-06-04 06:49:54

标签: javascript arrays

我有array,看起来像

[
    { "Fare":10, "TotalFare":30 },
    { "Fare":20, "TotalFare":50 },
    { "Fare":30, "TotalFare":100 }
]

现在我想在索引为0

的一个变量中添加这些票价

就像我写array[0].fare时一样,我应该得到总数,60

是的,我知道我可以用for循环来做到这一点 比如array[0].fare += array[i].fare

但有没有更好的方法来做到这一点,

  

因为我的数组由64/65列组成,我必须添加它,如果我像上面那样写,它会很长,

我该怎么办?

3 个答案:

答案 0 :(得分:0)

array.reduce(function(acc, val) { return acc.fare + val; });

我没有测试过这个,但我想你应该能够使用array.reduce并简化你的解决方案。

答案 1 :(得分:0)

首先,您需要使用0在数组的索引unshift()处添加新对象,然后您可以使用forEach()循环,如下所示:



var arr = [
    { "Fare":10, "TotalFare":30 },
    { "Fare":20, "TotalFare":50 },
    { "Fare":30, "TotalFare":100 }
];
arr.unshift({"Fare":0});
arr.forEach(obj=>arr[0].Fare += obj.Fare);
console.log(arr[0].Fare);




答案 2 :(得分:0)

您可以将reduce方法与Object.keys结合使用。

let arr = [ { "Fare":10, "TotalFare":30 }, { "Fare":20, "TotalFare":50 }, { "Fare":30, "TotalFare":100 } ]

arr[0] = Object.keys(arr[0]).reduce(function(obj, key){
  obj[key] = arr.map(a => a[key]).reduce((a,b) => a + b);
  return obj;
},{});
console.log(arr[0]);