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

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

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 Report

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 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!