Сложение свойств объекта

358
23 января 2017, 20:20

Необходимо в объект записать свойства двух других объектов, но при этом одинаковые свойства не заменять, а складывать значения ключей. Пример:

let object1 = {
  'ключ1': 100,
  'ключ2': 100
};
let object2 = {
  'ключ2': 10,
  'ключ3': 10
};
/*
  Желаемый результат:
  object3 = {
    'ключ1': 100,
    'ключ2': 110,
    'ключ3': 10
  }
*/
Answer 1

Можно циклами и проверкой на наличие:

let object1 = { 
  'ключ1': 100, 
  'ключ2': 100 
}; 
 
let object2 = { 
  'ключ2': 10, 
  'ключ3': 10 
}; 
 
let object3 = {}; 
 
for(key in object1){ 
  if(object2[key] == undefined){ 
    object3[key] = object1[key]; 
  }else{ 
    object3[key] = parseFloat(object1[key]) + parseFloat(object2[key]); 
  }; 
}; 
for(key in object2){ 
  if(object1[key] == undefined){ 
    object3[key] = object2[key]; 
  }else{ 
    object3[key] = parseFloat(object1[key]) + parseFloat(object2[key]); 
  }; 
}; 
 
console.log(object3);

Answer 2

let object1 = { 
  'ключ1': 100, 
  'ключ2': 100 
}; 
 
let object2 = { 
  'ключ2': 10, 
  'ключ3': 10 
}; 
const addValueByKey = (...rest) => rest.reduce( ( result, current ) => { 
  for(let key in current){ 
      let value = current[key]; 
       
      if(result[key] === undefined){ 
        result[key] = value; 
      }else{ 
        result[key] += value; 
      } 
  } 
   
  return result; 
}, {} ); 
 
 
console.log(addValueByKey(object1, object2));

READ ALSO
Обратная связь двух input на Jquery

Обратная связь двух input на Jquery

Как сделать обратную связь двух input на Jquery? Пока получается только от #element1 к #element2:

392
передача данных из коллекции java в jquery (Autocomplete)

передача данных из коллекции java в jquery (Autocomplete)

Добрый день! Изучаю jquery(Autocomplete), и столкнулся с такой проблемойесли у меня список значений в заданном массиве в скрипте то все работает:

316
Как сделать анимацию появления блока в ангуляре?

Как сделать анимацию появления блока в ангуляре?

Как сделать чтобы когда нажимаем второй раз на кнопку, то блок плавно возвращался назад? jquery использовать нельзя, проект делается на ангуляре

430
CSS-спрайты и border-image

CSS-спрайты и border-image

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

347