Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!