我有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列组成,我必须添加它,如果我像上面那样写,它会很长,
我该怎么办?
答案 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]);