Me gustaría fusionar dos objetos juntos. Los números no deben ser reemplazados, sino agregados.
Si uso el operador de propagación, los números se reemplazan.
Cómo funciona por el momento:
let obj1 = { title: 'Number', num: 1 } let obj2 = { title: 'Number', num: 2 } let merge = { ...obj1, ...obj2 } // Object { title: 'Number', num: 2 }Cómo debería funcionar:
let obj1 = { title: 'Number', num: 1 } let obj2 = { title: 'Number', num: 2 } let merge = { ...obj1, ...obj2 } // Object { title: 'Number', num: 3 }Al final, el número debe agregarse entre sí en lugar de reemplazarse. ¿Es esto posible con la sintaxis de difusión?
Debería poder obtener la suma con la suficiente facilidad usando Array.reduce() , creamos una matriz que contiene los objetos que se fusionarán, luego reducimos para obtener el resultado:
let obj1 = { title: 'Number', num: 1 } let obj2 = { title: 'Number', num: 2 } let a = [obj1, obj2]; const result = a.reduce ((acc, cur) => { return { ...cur, num: (acc.num || 0) + cur.num}; }, {}); console.log('Result:', result); .as-console-wrapper { max-height: 100% !important; top: 0; }También puedes probar algo como esto.
let obj1 = { title: 'Number', num: 1 } let obj2 = { title: 'Number', num: 2 } const obj = {}; obj['title'] = obj1['title'] obj['num'] = obj1['num'] + obj2['num'] console.log(obj)