• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

101
Vistas
Manipular objetos en una matriz para incluir una matriz de otros valores encontrados en objetos hermanos

Tengo una matriz que se ve así (simplificado):

 [ { name: 'Store1', price: ['10'], somethingElse: null }, { name: 'Store2', price: ['5'], somethingElse: 6 }, { name: 'Store2', price: ['15'], somethingElse: 6 }, ]

Necesito convertirlo en esto:

 [ { name: 'Store1', price: ['10'], somethingElse: null }, { name: 'Store2', price: ['5', '15'], somethingElse: 6 }, ]

Entonces, para cada objeto donde el name es el mismo, toma el price de todos ellos y los coloca en una matriz, y reduce la cantidad de entradas con el mismo name a una.

Necesita funcionar para una matriz mucho más larga y con muchos name .

Supongamos que todo lo que no sea el price será el mismo en cada objeto que tenga el mismo name .

Lo he intentado durante demasiado tiempo usando array.reduce pero sin suerte.

almost 3 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

 const input = [ { name: 'Store1', price: ['10'], somethingElse: null }, { name: 'Store2', price: ['5'], somethingElse: 6 }, { name: 'Store2', price: ['15'], somethingElse: 6 }, ] const output = input.reduce((a,c) => { if(a.find(i => i.name === c.name)) { // Check if 'name' already exist return a.map(el => el.name === c.name ? ({...el, price: [...el.price, ...c.price]}) : el) // updating price for existed name } else { return [...a, c] // no such name, should add to ouput result } }, []) console.log(output)

almost 3 years ago · Juan Pablo Isaza Denunciar

0

Puede utilizar la agrupación por enfoque hash:

 const data = [{"name":"Store1","price":["10"],"somethingElse":null},{"name":"Store2","price":["5"],"somethingElse":6},{"name":"Store2","price":["15"],"somethingElse":6}]; const result = Object.values(data.reduce((acc, obj) => { acc[obj.name] ??= obj; if (!acc[obj.name].price.includes(...obj.price)) acc[obj.name].price.push(...obj.price); return acc; }, {})); console.log(result);
 .as-console-wrapper{min-height: 100%!important; top: 0}

almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda