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

156
Visualizações
matriz de filtro para que los objetos con la misma propiedad solo aparezcan una vez en la matriz

Tengo la siguiente matriz:

 [ {name: "Joske", code: "IEDDK"}, {name: "Mieke", code: "IEDDK"}, {name: "Jan", code: "IEDDK"}, {name: "Test", code: "IsxJK"}, {name: "Koen", code: "IsxJK"}, ]

Y necesito una función que me proporcione una matriz de objetos en los que solo se produzca una vez la propiedad del código:

 [ {name: "Joske", code: "IEDDK"}, {name: "Test", code: "IsxJK"}, ]

Lo he pensado y creo que lo estoy haciendo más difícil de lo necesario. ¿Alguien tiene una función simple para hacer esto?

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

0

Si no te importa una "última victoria", esto se puede hacer muy bien con

 [...new Map(data.map(d => [d.code, d])).values()]

con complejidad O(n) (a diferencia de algunos otros enfoques que reiteran la matriz para cada miembro, buscando coincidencias que muestren complejidad cuadrática).

Para una "primera victoria", simplemente invierta sus datos:

 [...new Map([...data].reverse().map(d => [d.code, d])).values()]

Esto se puede plegar en una función genérica con seguridad de tipos:

 const distinctBy = <T, K>(data: T[], keySelector: (v: T) => K): T[] => [...new Map(data.map(d => [keySelector(d), d])).values()]

y usado

 distinctBy(data, d => d.code)

Enlace del patio de recreo

about 4 years ago · Juan Pablo Isaza Relatório

0

Con filter y findIndex también es una opción:

 const arr = [ {name: "Joske", code: "IEDDK"}, {name: "Mieke", code: "IEDDK"}, {name: "Jan", code: "IEDDK"}, {name: "Test", code: "IsxJK"}, {name: "Koen", code: "IsxJK"}, ]; const isTheSameAs = ({ code }) => item => item.code === code; const filteredArr = arr .filter((item, indexInOriginalArray, array) => array.findIndex(isTheSameAs(item)) === indexInOriginalArray); console.log(filteredArr);

about 4 years ago · Juan Pablo Isaza Relatório

0

Agrupe su matriz según el code usando array#reduce en un acumulador de objetos y extraiga todos los valores usando Object.values() .

 const data = [{ name: "Joske", code: "IEDDK" }, { name: "Mieke", code: "IEDDK" }, { name: "Jan", code: "IEDDK" }, { name: "Test", code: "IsxJK" }, { name: "Koen", code: "IsxJK" }, ], result = Object.values(data.reduce((r, o) => { r[o.code] = r[o.code] || o; return r; },{})); console.log(result);

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