Объединяйте объекты в массив и добавляйте значения.JavaScript / node.js - PullRequest
0 голосов
/ 19 января 2019

есть ли способ превратить

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

в:

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

Размер массива меняется каждый раз, когда мы запускаем приложение.

Ответы [ 3 ]

0 голосов
/ 19 января 2019

уменьшить твой друг

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);
0 голосов
/ 19 января 2019

Уменьшение массива в сочетании с 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)
0 голосов
/ 19 января 2019

Создать новый объект. Итерация по каждому объекту во входном массиве. Для каждого объекта итерируйте ключи этого объекта. Если они существуют в вашем новом объекте, добавьте значение, в противном случае добавьте ключ и значение в новый объект;

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...