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

222
Vistas
Cómo analizar datos duplicados en una lista de objetos en función de varias claves que tienen el mismo valor, donde una clave tiene el valor de una matriz de objetos

Como dice el título, estoy tratando de almacenar una lista de objetos duplicados basados en pares clave:valor específicos que son iguales.

El objetivo es analizar la información y devolver una lista de elementos duplicados. Un elemento duplicado es cuando la identificación, el título y los elementos coinciden. El principal problema que tengo con esto es que dentro de cada objeto, una de las claves para comparar es una matriz que contiene una lista de objetos como valores.

¿Cómo resolvería este problema, recorriendo una matriz de objetos para determinar si la matriz de elementos está duplicada?

A continuación se muestra solo un pequeño ejemplo de los datos JSON.

Debería devolver: objeto completo de pk:"0002" y pk"0003" ya que están duplicados. No debería devolver Object pk:"0001" y pk "0004" ya que su conjunto de elementos:[{}] no son iguales.

Mi intento puede determinar si la identificación y los títulos coinciden, pero no puedo hacer que los elementos coincidan:

 var data = [ { pk: "0001", ID: "1A", title: "Material 15", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }, { title: "EXTRA", value: "55" }, ], }, { pk: "0002", ID: "1A", title: "Material 1", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }, ], }, { pk: "0003", ID: "1A", title: "Material 1", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }, ], }, { pk: "0004", ID: "1A", title: "Material 15", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }, ], }, ]; let duplicates = []; data.forEach((el, i) => { data.forEach((element, index) => { if (i === index) return null; if (element.ID === el.ID && element.title === el.title) { if (!duplicates.includes(el)) { //Issue here -> I want to compare the array of items but im not sure how to ? //Attempt: // I think I understand that this is wrong due to the indexes not sure how you would find this ? // if (element.items[i] === el.items[i]) { // duplicates.push(el); // console.log("Test"); // } duplicates.push(el); } } }); }); console.log("duplicates", duplicates);

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

0

Puede contar los elementos con los mismos valores en cadena y obtener sus objetos como resultado.

 const data = [{ pk: "0001", ID: "1A", title: "Material 15", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }, { title: "EXTRA", value: "55" }] }, { pk: "0002", ID: "1A", title: "Material 1", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }] }, { pk: "0003", ID: "1A", title: "Material 1", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }] }, { pk: "0004", ID: "1A", title: "Material 15", items: [{ title: "Info", value: "" }, { title: "Type", value: "" }] }], keys = ['ID', 'title', 'items'], map = data.reduce((m, o) => { const key = keys.map(k => JSON.stringify(o[k])).join('|'), [count = 0, array = []] = m.get(key) || []; return m.set(key, [count + 1, [...array, o]]); }, new Map), duplicates = Array .from(map.values(), ([count, array]) => count === 1 ? []: array) .flat(); console.log(duplicates);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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