Как из нескольких объектов сделать один, сложив значения свойств с одинаковыми именами?

Имеется два объекта:

var dmg1 = {
  "nick1": 100,
  "nick2": 50
}

var dmg2 = {
  "nick1":50,
  "nick2":150
}

Нужно объединить их в один:

var dmg3 = {
  "nick1":150,
  "nick2":150
}

То есть, нужно сложить значения ключей объектов и получить "объединённый" объект, как это сделать?
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Коротко:

const sum = (...arr) => arr
  .flatMap(Object.entries)
  .reduce((acc, [ k, v ]) => (
    acc[k] = (acc[k] ?? 0) + v,
    acc
  ), {});

Длинно:

function sum() {
  const result = {};

  for (const n of arguments) {
    for (const k in n) {
      if (n.hasOwnProperty(k)) {
        if (!result.hasOwnProperty(k)) {
          result[k] = 0;
        }

        result[k] += n[k];
      }
    }
  }

  return result;
}

Использовать, понятное дело, так: const obj = sum(obj1, obj2);.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Вам нужно сложить поля в объектах, так и складывайте их
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы