簡體   English   中英

數組對象中的Sum數組值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM