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

94
Vistas
Elimine duplicados en una matriz pero agregue una propiedad de conteo para ver la cantidad de duplicados

Básicamente, si tuviera esta matriz:

 [{"id" = 1, "product" = "Book"}, {"id" = 1, "product" = "Book"}, {"id" = 1, "product" = "Book"}, {"id" = 2, "product" = "Chair"}]

Se convertiría en esta matriz:

 [{"id" = 1, "product" = "Book", "count" = 3}, {"id" = 2, "product" = "Chair", "count" = 1}]

Estoy usando reaccionar. Otra opción que tengo es agregar la propiedad de recuento al crear y agregar a la matriz para que no se agreguen duplicados, pero tengo curiosidad por saber si hay una manera de hacerlo con una matriz existente.

Editar: si dos productos tienen la misma identificación, son duplicados.

Intenté filtrar la matriz usando la identificación y luego obteniendo el primer objeto. Filtré la matriz nuevamente por id para obtener la longitud. Luego agregué una nueva propiedad "recuento" al primer objeto que es la longitud de la matriz filtrada, luego agregué el primer objeto a una nueva matriz. El problema de hacerlo de esta manera es que tengo que codificar esto para cada identificación posible, incluso si no está incluido en mi matriz.

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

0

Puede reducir la matriz a una nueva matriz con la propiedad de count agregada. Se supone que la propiedad id es suficiente para considerar la unicidad. Si el elemento ya se ha visto, incremente el count ; de lo contrario, agregue un nuevo objeto de elemento aumentado.

 const data = [{ "id": 1, "product": "Book" }, { "id": 1, "product": "Book" }, { "id": 1, "product": "Book" }, { "id": 2, "product": "Chair" }]; const dedupedData = data.reduce((data, el) => { const index = data.findIndex(item => item.id === el.id); if (index !== -1) { data[index].count++; } else { data.push({ ...el, count: 1 }); } return data; }, []); console.log(dedupedData);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Reduzca la matriz a un Map (o incluso a un objeto simple) con clave de id (suponiendo que eso es todo lo que se necesita para identificar un duplicado).

Los valores de ese mapa serán la matriz que buscas.

 const arr = [{"id":1,"product":"Book"},{"id":1,"product":"Book"},{"id":1,"product":"Book"},{"id":2,"product":"Chair"}] const zipped = Array.from(arr.reduce((map, o) => { // check if id already registered if (map.has(o.id)) { // increment count map.get(o.id).count++ } else { // otherwise, store the new object with count starting at 1 map.set(o.id, { ...o, count: 1 }) } return map }, new Map()).values()) console.log(zipped)
 .as-console-wrapper { max-height:100% !important; }

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