Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

276
Visualizações
¿Cómo combino dos objetos fusionando los valores de las mismas propiedades?

¿Hay alguna forma en que podamos combinar dos objetos anidando los valores si las propiedades son las mismas en lugar de sobrescribirlas? P.ej:

 const obj1 = {a:10,b:13} const obj2 = {a:84,c:70} desired result : combinedObject = {a:{0:10,1:84}, b:13, c:70}
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

const obj1 = { a: 10, b: 13 } const obj2 = { a: 84, c: 70, d: 40 } function foo(obj1, obj2) { const newObject = {} for (const key in { ...obj1, ...obj2 }) { const element1 = obj1[key]; const element2 = obj2[key]; if (element1 && element2) newObject[key] = [element1, element2] else if (element1) newObject[key] = element1 else if (element2) newObject[key] = element2 } return newObject } console.log(foo(obj1, obj2))
about 4 years ago · Juan Pablo Isaza Relatório

0

debe seguir las reglas de las definiciones de objetos

 const obj1 = {a:10,b:13} const obj2 = {a:84,c:70} //it can be like this combinedObject = {a:[10,84], b:13, c:70} // you can access to that value like this let value = combinedObject.a[0];

y finalmente, puedes usar este código para la combinación

 const obj1 = { a: 10, b: 13 }; const obj2 = { a: 84, c: 70 }; const props = Object.getOwnPropertyNames(obj2); let combinedObject = { ...obj1 }; for (let i = 0; i < props.length; i++) { if (combinedObject[props[i]]) combinedObject[props[i]] = [combinedObject[props[i]], obj2[props[i]]]; else combinedObject[props[i]] = obj2[props[i]]; } //result :{a:[10,84], b:13, c:70}

como desées

 const obj1 = { a: 10, b: 13 }; const obj2 = { a: 84, c: 70 }; const props = Object.getOwnPropertyNames(obj2); let combinedObject = { ...obj1 }; for (let i = 0; i < props.length; i++) { if (combinedObject[props[i]]) combinedObject[props[i]] = {0:combinedObject[props[i]], 1:obj2[props[i]]}; else combinedObject[props[i]] = obj2[props[i]]; } console.log(combinedObject); //result :{a:{0:10,1:84}, b:13, c:70}
about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí hay dos soluciones, la primera, fusionar los valores de las claves en un objeto con el mismo nombre de clave. El segundo, propone una forma de fusionarlos como mencionas, pero es un poco más complicado mantener el índice de cada clave, pero aún es posible.

El resultado de ambas opciones se ve así.

 // Option 1 { a: [ 10, 11, 84 ], b: [ 13, 12 ], c: 70, d: 50 } // Option 2 { a: { '0': 10, '1': 11, '2': 84 }, b: { '0': 13, '1': 12 }, c: 70, d: 50 }

Y así es como se logra

 const obj1 = { a: { 0: 10, 1: 11 }, b: 13 } const obj2 = { a: 84, b: 12, c: 70, d: 50 } const allKeys = Object.keys({ ...obj1, ...obj2 }); const merged1 = {}; for (const key of allKeys) { const isObj1Object = typeof obj1[key] === 'object'; const isObj2Object = typeof obj2[key] === 'object'; if (obj1[key] && obj2[key]) { merged1[key] = [ ...(isObj1Object ? Object.values(obj1[key]) : [obj1[key]]), ...(isObj2Object ? Object.values(obj2[key]) : [obj2[key]]), ]; } else if (obj1[key] || obj2[key]) { merged1[key] = obj1[key] || obj2[key]; } } console.log(merged1); const merged2 = {}; for (const key of allKeys) { if (obj1[key] && obj2[key]) { const isObj1Object = typeof obj1[key] === 'object'; const isObj2Object = typeof obj2[key] === 'object'; merged2[key] = { ...( isObj1Object ? Object.values(obj1[key]).reduce((acc, v, i) => { acc[Object.keys(obj2[key]).length + i] = v; return acc; }, {}) : ( isObj2Object ? { [Object.keys(obj2[key]).length]: obj1[key] } : { 0: obj1[key] } ) ), ...( isObj2Object ? Object.values(obj2[key]).reduce((acc, v, i) => { acc[Object.keys(obj1[key]).length + i] = v; return acc; }, {}) : ( isObj1Object ? { [Object.keys(obj1[key]).length]: obj2[key] } : { 1: obj2[key] }) ), }; } else if (obj1[key] || obj2[key]) { merged2[key] = obj1[key] || obj2[key]; } } console.log(merged2);

Puedes probar las diferentes opciones aquí

Si desea tener una combinación profunda sin ninguna limitación de nivel, deberá actualizar el código para usar un método recursivo.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda