Как суммировать два или более объекта JSON в один - PullRequest
0 голосов
/ 28 ноября 2018

привет, у меня есть следующие объекты JSON;

var obj1 = {"a":1,"b":1,"c":1};
var obj2 = {"a":2,"b":2,"c":2};
var obj3 = {"a":3,"b":3,"c":3};

Я хочу суммировать или вычесть более 3 объектов json Я хочу получить конечный результат как

  {"a":6,"b":6,"c":6}

Я знаю, что это очень простос помощью различных типов петли.но я хочу знать, существует ли какая-либо функция в javascript для объединения нескольких объектов JSON и добавления или вычитания каждого свойства (без цикла).

возможна ли функция типа reduce в массиве: как показано ниже:

var squares = arr.concat(arr2).reduce((t,n)=>t+n);

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы можете просто зациклить одно из ваших object свойств и построить результат:

let res = {};
for (p in obj1) {
  res[p] = obj1[p] + (obj2[p] || 0) + (obj3[p] || 0);
}

Демо:

var obj1 = {"a":1,"b":1,"c":1};
var obj2 = {"a":2,"b":2,"c":2};
var obj3 = {"a":3,"b":3,"c":3};

let res = {};

for (p in obj1) {
  res[p] = obj1[p] + (obj2[p] || 0) + (obj3[p] || 0);
}
console.log(res);
0 голосов
/ 28 ноября 2018

Нет такой встроенной функции, которая могла бы выполнять что-то подобное автоматически, но тривиально написать свой собственный код, который делает то, что вы хотите:

var obj1 = {"a":1,"b":1,'c':1};
var obj2 = {"a":2,"b":2,'c':2};
var obj3 = {"a":3,"b":3,'c':3};
const combined = [obj1, obj2, obj3].reduce((a, obj) => {
  Object.entries(obj).forEach(([key, val]) => {
    a[key] = (a[key] || 0) + val;
  });
  return a;
});
console.log(combined);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...