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

187
Visualizações
Matriz de filtros de TypeScript de objetos por propiedades duplicadas

Tengo una matriz de objetos que me gustaría filtrar para devolver objetos con valores de propiedad duplicados.

Mi matriz de objetos:

 values = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, { id: 4, name: 'a' } ];

El resultado que me gustaría tener en una nueva matriz de objetos:

 duplicateValues = [ { id: 1, name: 'a' }, { id: 4, name: 'a' } ];
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

  • Agrupe los valores por su name usando Array.prototype.reduce
  • Filtre los grupos donde la longitud es mayor que 1 usando Array.prototype.filter .
  • Y finalmente aplane la matriz resultante usando Array.prototype.flat .

 const values = [{ id: 1, name: "a" }, { id: 2, name: "b" }, { id: 3, name: "c" }, { id: 4, name: "a" }]; const duplicates = Object.values( values.reduce((r, v) => ((r[v.name] ??= []).push(v), r), {}) ) .filter((g) => g.length > 1) .flat(); console.log(duplicates);

solución mecanografiada:

 type Values = { id: number, name: string }[]; const values = [{ id: 1, name: "a" }, { id: 2, name: "b" }, { id: 3, name: "c" }, { id: 4, name: "a" }]; const duplicates = Object.values( values.reduce( (r: { [k: string]: Values }, v) => ((r[v.name] ??= []).push(v), r), {} ) ) .filter((g) => g.length > 1) .flat(); console.log(duplicates);
about 4 years ago · Juan Pablo Isaza Relatório

0

 function findDuplicates(data) { // map containing already added names. const existing = new Map(); // set containing names, which were parsed in passed and added at future occurence of that name const consideredReadd = new Set(); // final output array const output = []; data.forEach((item) => { if(!existing.has(item.name)) { // if not present in already parsed names, add in map existing.set(item.name, item); } else { if (!consideredReadd.has(item.name)) { // if is already present and past record isn't added in output array, add that record in output array and set the key in data set. consideredReadd.add(item.name); output.push(existing.get(item.name)); } // push the current item as it existed in past output.push(item); } }); // return output array return output; } let values = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, { id: 4, name: 'a' } ]; duplicateValues = findDuplicates(values); console.log(duplicateValues);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede copiar la matriz y filtrarla según el valor. Vea la demostración aquí: https://stackblitz.com/edit/typescript-xww2ai?file=index.ts

 const values = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, { id: 4, name: 'a' }, ]; const copyValues = [...values]; const duplicateObjects = values.filter( (v) => copyValues.filter((cp) => cp.name === v.name).length > 1 ); console.log(duplicateObjects);

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