Tengo 2 objetos que quiero combinar juntos.

Object1 = {'1234':{name: 'One'},'4567': {name: 'two'}}
Object2 = {'1234':{id: 1234, location: 'paris'},'4567':{id: 4567, location: 'london'}}

Si la identificación coincide con la tecla de objeto, férmelo.

Quiero un resultado como este:

Object3 = {'1234':{id: 1234, name: 'One', location: 'paris'},'4567':{id: 4567, name: 'two', location: 'london'}}

Si intento distribuir el operador u objeto.assign, sobrescribe el objeto anterior.

-4
sebs_dev 8 jun. 2021 a las 20:29

2 respuestas

La mejor respuesta

Lo más probable es que desee iterar a través de uno de los objetos y fusionar cada valor.

const Object1 = {'1234':{name: 'One'},'4567': {name: 'two'}};
const Object2 = {'1234':{id: 1234, location: 'paris'},'4567':{id: 4567, location: 'london'}};
const Object3 = {};

for (let key in Object1) {
    Object3[key] = {...Object2[key], ...Object1[key]}
}

console.log(Object3);

Además, puede agregar algunos si las declaraciones para verificar si la tecla existe o no en ambos objetos.

-1
tomsidorov 8 jun. 2021 a las 17:43

Puede iterar a través de cada tecla en object1 usando Object.keys() y luego genere el nuevo objeto para cada tecla usando array#reduce.

const object1 = {'1234':{name: 'One'},'4567': {name: 'two'}},
      object2 = {'1234':{id: 1234, location: 'paris'},'4567':{id: 4567, location: 'london'}},
      result = Object.keys(object1).reduce((r,k) => {
        r[k] = r[k] || {};
        r[k] = {...object1[k], ...object2[k]};
        return r;
      },{});
console.log(result);
-1
Hassan Imam 8 jun. 2021 a las 18:00