【问题标题】:Combine objects in an array and add values. JavaScript / node.js组合数组中的对象并添加值。 JavaScript / node.js
【发布时间】:2019-06-13 06:16:20
【问题描述】:

有办法转身

[ { JavaScript: 41837, Batchfile: 47 },
  { 'C#': 7484 },
  { Batchfile: 110 },
  { Scala: 50597 },
  { Java: 18180 },
  { Java: 55689 } ]

进入:

{ 
JavaScript: 41837,
Batchfile: 157,
'C#': 7484
Scala: 50597,
Java: 73869
}

每次我们运行应用程序时,数组的大小都是不同的。

【问题讨论】:

  • 这些值是否总是数字相加?

标签: javascript arrays node.js object


【解决方案1】:

reduce是你的朋友

const list = [ { JavaScript: 41837, Batchfile: 47 },
  { 'C#': 7484 },
  { Batchfile: 110 },
  { Scala: 50597 },
  { Java: 18180 },
  { Java: 55689 } ];
const summed = list.reduce((totals, obj) => {
  Object.keys(obj).forEach(k => {
    const cur = totals[k] || 0;
    totals[k] = cur + obj[k];
  });
  return totals;
}, {});
   console.log(summed);

【讨论】:

    【解决方案2】:

    创建一个新对象。遍历输入数组中的每个对象。对于每个对象,遍历该对象的键。如果它们的键存在于您的新对象中,则添加值,否则将键和值添加到新对象中;

    var arr = [ { JavaScript: 41837, Batchfile: 47 },
      { 'C#': 7484 },
      { Batchfile: 110 },
      { Scala: 50597 },
      { Java: 18180 },
      { Java: 55689 } ]
      
    var result = {}
    
    arr.forEach(function(group){
      Object.keys(group).forEach(function(key){
        if(result[key]) {
          result[key] += group[key];
        } else {
          result[key] = group[key];
        }
      })
    });
    
    console.log(result);

    【讨论】:

      【解决方案3】:

      Array reduce 结合 For in 循环遍历其中的对象键会得到你想要的。

      a = [ { JavaScript: 41837, Batchfile: 47 },
        { 'C#': 7484 },
        { Batchfile: 110 },
        { Scala: 50597 },
        { Java: 18180 },
        { Java: 55689 } ]
      
        result = {}
      
        b = a.reduce((result, item) => {
          for (let eachKey in item) {
            const curSum = result[eachKey] || 0;;
            result[eachKey] = curSum + item[eachKey];
          }
          return result;
        }, result)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-04
        • 2020-09-14
        • 2018-11-19
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 2014-07-09
        相关资源
        最近更新 更多