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

229
Views
¿Seleccionar todos los objetos similares (mediante teclas de selección) de la matriz?

¿Cómo puedo filtrar una matriz a todos los objetos que pueden parecer similares por ciertas claves sin saber el valor de esas claves?

Imagina que tengo un objeto como este:

 let list = [ { name: 'Adam', age: '10', uniqueStuff: 'a'}, { name: 'Brian', age: '2', uniqueStuff: 'b'}, { name: 'Carley', age: '15', uniqueStuff: 'c'}, { name: 'Adam', age: '2', uniqueStuff: 'd'}, { name: 'Christy', age: '15', uniqueStuff: 'e'}, { name: 'Adam', age: '10', uniqueStuff: 'f'}, ]

Quiero que el resultado sea:

 let list = [ { name: 'Adam', age: '10', uniqueStuff: 'a'}, { name: 'Adam', age: '10', uniqueStuff: 'f'}, ]

Estos pueden parecer duplicados porque comparten el mismo nombre y edad, pero uniqueStuff es diferente. Entonces, no estoy tratando de eliminar posibles duplicados, sino de obtener una matriz de todos los objetos similares en la matriz.

Algo así como responder a la pregunta "¿cuántos niños tenemos con los mismos nombres y las mismas edades?"

Esto sería similar a las consultas "tener conteo (*)> 1" de MySQL.

Me está costando mucho buscar una respuesta o descubrir un método LoDash. Todo lo que encuentro se trata de eliminar duplicados u obtener solo los duplicados, por lo que solo hay 1 de cada elemento. En cambio, quiero obtener todos los elementos que están duplicados y tienen duplicados. Entonces, cada "coincidencia" en mi matriz debe tener 2 o más elementos. Por ejemplo, 2 o más Adams de 10 años, 2 o más Amys de 6 años, etc.

¡Gracias por adelantado!

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

0

const reduced = list.reduce((prev, curr) => { const key = `${curr.name}, ${curr.age}` return { ...prev, [key]: [...(prev[key] || []), curr] } }, {}) const filtered = Object.values(reduced).filter(v => v.length > 1) const flatted = filtered.flat()

Puede eliminar la última línea si prefiere tener cada conjunto de 2 en una matriz.

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!