[英]Sum values of array of object grouped by keys and return into a new array of arrays
[英]Sum array values in object of arrays
我正在尋找數組對象中的位置。 基本上,每個數字代表費用項目的年度金額,我需要每年對這些數字求和。 對象看起來像這樣(見下文),結果應該是一個數組= [1500,1900,2400]給定下面的對象。
x = [{
"HVAC": [100, 200, 300, 400],
"foundation": [500, 600, 700, 800],
"roof": [900, 1000, 1100, 1200]
}];
如果數組未命名,而是看起來像:
x = [
[100, 200, 300, 400],
[500, 600, 700, 800],
[900, 1000, 1100, 1200]
];
然后這個函數會做我想要的(感謝這個文章的數組和矩陣的數組(矩陣)垂直有效/優雅 ):
$scope.reserveTotals = x.reduce(function(a, b) {
return a.map(function(v, i) {
return v + b[i];
});
});
就目前而言,我需要保持原始結構,並且正在努力使該功能適應我所需要的。 任何幫助贊賞!
略有不同的解決方案。
var x = { "HVAC": [100, 200, 300, 400], "foundation": [500, 600, 700, 800], "roof": [900, 1000, 1100, 1200] }, result = Object.keys(x).reduce(function (r, k) { x[k].forEach(function (a, i) { r[i] = (r[i] || 0) + a; }); return r; }, []); document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
您可以使用for...in
循環並reduce
x = [{ "HVAC": [100, 200, 300, 400], "foundation": [500, 600, 700, 800], "roof": [900, 1000, 1100, 1200] }]; for(var p in x[0]) { x[0][p] = x[0][p].reduce((a, b) => { return a + b}); } console.log(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.