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

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

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 Denunciar

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 Denunciar

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 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