Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

235
Vistas
¿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 Respuestas
Responde la pregunta

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 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda