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

131
Visualizações
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.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

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)

about 4 years ago · Juan Pablo Isaza Relatório

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}

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