Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
Quiero crear un objeto con la clave como propiedad del objeto y el valor como una matriz de objetos que coincidan con la clave (javascript)

Tengo un objeto dado para iterar y crear otro objeto en el siguiente formato (newObj) Objeto dado:

 let obj = [ {a: 1, b: 232}, {a: 1, b: 2}, {a: 1, b: 256}, {a: 2, b: 3}, {a: 2, b: 3343}, {a: 3, b: 4} ];

Objeto esperado:

 newObj = { 1: [{a: 1, b: 232}, {a: 1, b: 2}, {a: 1, b: 256}], 2: [{a: 2, b: 3}], 3: [{a: 3, b: 4}] }

Código:

 let newObj = {}; obj.forEach(element => { if (newObj[element.a]) { let key = element.a; newObj[key] = newObj[key].push(element); } newObj[element.a] = [element]; }); console.log(newObj);
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Creamos un objeto de result , recorremos cada objeto en la matriz obj , si no tenemos el objeto a clave en el objeto de resultado, lo agregamos ( a: [] ), y luego empujamos todo el objeto a result[a] matriz

 let obj = [ {a: 1, b: 232}, {a: 1, b: 2}, {a: 1, b: 256}, {a: 2, b: 3}, {a: 2, b: 3343}, {a: 3, b: 4} ]; let result = {}; for(const {a, b} of obj) { if(!result[a]) result[a] = [] result[a].push({a, b}) } console.log(result)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para abordar su fragmento de código actualizado, solo necesita crear una nueva matriz para una clave determinada si la clave no existe.

 let obj = [ { a: 1, b: 232 }, { a: 1, b: 2 }, { a: 1, b: 256 }, { a: 2, b: 3 }, { a: 2, b: 3343 }, { a: 3, b: 4 } ]; let newObj = {}; obj.forEach(element => { let key = element.a; if (!newObj[key]) { newObj[key] = []; // Only initialize if undefined/null } newObj[key].push(element); // Always push }); console.log(newObj);
 .as-console-wrapper { top: 0; max-height: 100% !important; }

Un enfoque más moderno sería simplemente agruparlos por la tecla a mediante la reducción y la distribución.

 const obj = [ { a: 1, b: 232 }, { a: 1, b: 2 }, { a: 1, b: 256 }, { a: 2, b: 3 }, { a: 2, b: 3343 }, { a: 3, b: 4 } ]; const newObj = obj.reduce((acc, o) => ({ ...acc, [oa]: [...(acc[oa] ?? []), o] }), {}); console.log(newObj);
 .as-console-wrapper { top: 0; max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

puedes usar reducir para eso

 let obj = [ {a: 1, b: 232}, {a: 1, b: 2}, {a: 1, b: 256}, {a: 2, b: 3}, {a: 2, b: 3343}, {a: 3, b: 4} ]; const newObj = obj.reduce((res, {a, b}) => { return { ...res, [a] : [...(res[a] || []), {a, b}] } }, {}) console.log(newObj)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda