Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

209
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!