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

198
Vistas
Encontrar duplicados en una matriz de objetos en javascipt por método de mapa

Estoy tratando de eliminar el duplicado de una matriz de objetos en Javascript. A continuación se muestra el código que no funciona, está creando una matriz de mapa de tamaño 4.

 let arr = [{id: 32, name: 'Name1', age: 88}, {id: 33, name: 'Name2', age: 88}, {id: 32, name: 'Name3', age: 88}, {id: 1, name: 'Sam', age: 88}, {id: 33, name: 'Name2', age: 88}, {id: 2, name: 'Tom', age: 88} ]; console.log(arr) let mp1 = new Map(); let uniqueElements = arr.map( obj => mp1.set(obj.id, obj)) console.log(uniqueElements);

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El siguiente fragmento puede ser una posible implementación para lograr el objetivo deseado:

 const discardDupeIdElements = arr => ( Object.values( arr.reduce( (fin, itm) => ({ ...fin, [itm.id]: itm }), {} ) ) ); var origArr = [{ id: 32, name: 'Name1', age: 88 }, { id: 33, name: 'Name2', age: 88 }, { id: 32, name: 'Name3', age: 88 }, { id: 1, name: 'Sam', age: 88 }, { id: 33, name: 'Name2', age: 88 }, { id: 2, name: 'Tom', age: 88 } ]; console.log(discardDupeIdElements(origArr));

Nota

Esto siempre mantendrá el last elemento de un conjunto de duplicados e ignorará todos los anteriores. Como para id 32, mantendrá el elemento con name = Name3 y descartará Name2 .

Arreglando el código del OP :

 const arr = [{id: 32, name: 'Name1', age: 88}, {id: 33, name: 'Name2', age: 88}, {id: 32, name: 'Name3', age: 88}, {id: 1, name: 'Sam', age: 88}, {id: 33, name: 'Name2', age: 88}, {id: 2, name: 'Tom', age: 88} ]; // console.log(arr); // commented-out for easier viewing of the output const mp1 = new Map(); // declared a map arr.forEach(obj => mp1.set(obj.id, obj)); // used .forEach to iterate through the array // and update the map const uniqueElements = [...mp1.values()]; // used spread operator to extract // the values of the map into an array console.log(uniqueElements); // console.log the unique elements

Nota

Siempre que sea posible, use const en lugar de let .

about 4 years ago · Juan Pablo Isaza Denunciar

0

map devuelve la nueva matriz con la misma longitud de la matriz de llamada

Para el valor acumulado (aquí está mp1 ), debe usar reduce

 let uniqueElements = arr.reduce( (mp1, obj) => mp1.set(obj.id, obj), new Map() ) 

 let arr = [ { id: 32, name: 'Name1', age: 88 }, { id: 33, name: 'Name2', age: 88 }, { id: 32, name: 'Name3', age: 88 }, { id: 1, name: 'Sam', age: 88 }, { id: 33, name: 'Name2', age: 88 }, { id: 2, name: 'Tom', age: 88 }, ] console.log(arr) let uniqueElements = arr.reduce((mp1, obj) => mp1.set(obj.id, obj), new Map()) console.log(uniqueElements)

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