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

163
Views
¿Cómo obtener los objetos duplicados en una matriz?

Tengo una matriz como esta:

 var clients=[{"id":1,"name":"john","age":20}, {"id":3,"name":"dean","age":23}, {"id":12,"name":"harry","age":14}, {"id":1,"name":"sam","age":22}, {"id":13,"name":"Bolivia","age":16}, {"id":7,"name":"sabi","age":60}, {"id":7,"name":"sahra","age":40}, {"id":4,"name":"natie","age":53},{"id":7,"name":"many","age":22}]

Quiero encontrar los objetos duplicados y agruparlos así:

 [ { "id":1, "clients":[ {"id":1,"name":"john","age":20}, {"id":1,"name":"sam","age":22} ] }, { "id":7, "clients":[ {"id":7,"name":"sabi","age":60}, {"id":7,"name":"sahra","age":40}, {"id":7,"name":"many","age":22} ] } ]

¿puedo hacer eso con filter() como este: clients.reduce(//code hier) ?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

reduce() está hecho a medida para esto. Cuando desee agregar una matriz y obtener un resultado calculado, debe usar reduce() .

find() es otro método de matriz, que ayuda a encontrar un elemento de matriz basado en una condición (aquí la coincidencia de la propiedad id).

 var clients=[{"id":1,"name":"john","age":20}, {"id":3,"name":"dean","age":23}, {"id":12,"name":"harry","age":14}, {"id":1,"name":"sam","age":22}, {"id":13,"name":"Bolivia","age":16}, {"id":7,"name":"sabi","age":60}, {"id":7,"name":"sahra","age":40}, {"id":4,"name":"natie","age":53},{"id":7,"name":"many","age":22}] let ans = clients.reduce((agg,x,index) => { let findI = agg.find( a => a.id === x.id ); if(findI) findI.clients.push(x); else { agg.push({ id : x.id, clients : [x] }); } return agg; },[]); console.log(ans);

about 4 years ago · Juan Pablo Isaza Report

0

La solución más simple sería recorrer los clients y buscar un objeto existente con la misma id . En caso afirmativo, empuje a la matriz de clients . O bien, simplemente crea uno.

 var clients = [{ "id": 1, "name": "john", "age": 20 }, { "id": 3, "name": "dean", "age": 23 }, { "id": 12, "name": "harry", "age": 14 }, { "id": 1, "name": "sam", "age": 22 }, { "id": 13, "name": "olivia", "age": 16 }, { "id": 7, "name": "sabi", "age": 60 }, { "id": 7, "name": "sahra", "age": 40 }, { "id": 4, "name": "natie", "age": 53 }, { "id": 7, "name": "kany", "age": 22 }] const groups = []; for (let client of clients) { const existingGroup = groups.find(group => group.id == client.id) if (existingGroup) existingGroup.clients.push(client); else { groups.push({ id: client.id, clients: [client] }); } } console.log(groups);

Puede reasignar el objeto original con el objeto temporal que acaba de usar para esto y continuar con su lógica comercial, que creo que es la que está buscando.

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!