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

117
Vistas
Agrupar valores clave de objetos en un nuevo objeto con la misma estructura

Tengo este JSON y necesito agrupar en un nuevo objeto por clave:

 [ { "product": "name 1", "price": "3000", "inspection": false, }, { "product": "name 2", "price": "1000", "inspection": true, }, { "product": "name 3", "price": "5000", "inspection": false, }, ]

Resultado Final Esperado:

 { "product": ["name 1", "name 2", "name 3"], "price": ["3000", "1000", "5000"], "inspection": [false, true, false] }

Intenté usar -> for, foreach <- pero no obtuve un resultado bueno/óptimo. También consideré usar reduce pero no pude hacerlo funcionar.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

 let data = [ { "product": "name 1", "price": "3000", "inspection": false, }, { "product": "name 2", "price": "1000", "inspection": true, }, { "product": "name 3", "price": "5000", "inspection": false, }, ]; let output = Object.fromEntries( Object.keys(data[0]).map(k => [k, data.map(d => d[k])] ) ); console.log(output);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para objetos de cualquier forma, esto agrupará los elementos bajo cualquier clave:

 const arr = [ { product: "name 1", price: 3000, inspection: false }, { product: "name 2", price: 1000, inspection: true }, { product: "name 3", price: 5000, inspection: false }, ] const groups = arr.reduce((groups, obj) => Object.entries(obj).reduce((groups, [key, val]) => ( { ...groups, [key]: (groups[key]??[]).concat(val) } ), groups) , {}) console.log(groups)

Las claves que se agrupan se pueden cambiar filtrando el resultado de Object.entries(obj) por clave.

about 4 years ago · Juan Pablo Isaza Denunciar

0

A continuación se presenta una posible forma de lograr el objetivo deseado.

Fragmento de código

 // one possible method to transform given array const myTransform = arr => ( arr.reduce( (acc, { product, price, inspection }) => ( (acc.product ??= []).push(product), (acc.price ??= []).push(name), (acc.inspection ??= []).push(inspection), acc ), {} ) ); // using a simple for loop: const myTransform2 = arr => { // initialize result "res" as empty object const res = {}; // iterate over each elt in array "arr" for ({ product, price, inspection } of arr) { // if res has no key product, add one with value as empty array // push the "product" to the above key (res.product ??= []).push(product); // same logic for price (res.price ??= []).push(name); // same for inspection (res.inspection ??= []).push(inspection); }; // return the result return res; }; const dataArr = [{ "product": "name 1", "price": "3000", "inspection": false, }, { "product": "name 2", "price": "1000", "inspection": true, }, { "product": "name 3", "price": "5000", "inspection": false, }, ]; console.log( 'transformed array:\n', myTransform(dataArr) ); console.log( 'transformed array using for loop:\n', myTransform2(dataArr) );
 .as-console-wrapper { max-height: 100% !important; top: 0 }

Explicación

Comentarios agregados al fragmento anterior.

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