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

201
Views
¿Cómo puedo verificar si la matriz de objetos tiene valores de propiedad duplicados?

Necesito ayuda para iterar a través de la matriz, sigo atascado o reinventando la rueda.

 values = [ { name: 'someName1' }, { name: 'someName2' }, { name: 'someName1' }, { name: 'someName1' } ]

¿Cómo podría verificar si hay dos (o más) valores del mismo nombre en la matriz? No necesito un contador, solo establezco alguna variable si los valores de la matriz no son únicos. Tenga en cuenta que la longitud de la matriz es dinámica, también los valores de la matriz.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Utilice array.prototype.map y array.prototype.some :

 var values = [ { name: 'someName1' }, { name: 'someName2' }, { name: 'someName4' }, { name: 'someName2' } ]; var valueArr = values.map(function(item){ return item.name }); var isDuplicate = valueArr.some(function(item, idx){ return valueArr.indexOf(item) != idx }); console.log(isDuplicate);

over 4 years ago · Santiago Trujillo Report

0

Versión ECMA Script 6

Si se encuentra en un entorno que admite Set de ECMA Script 6, entonces puede usar Array.prototype.some y un objeto Set , como este

 let seen = new Set(); var hasDuplicates = values.some(function(currentObject) { return seen.size === seen.add(currentObject.name).size; });

Aquí, insertamos el name de todos y cada uno de los objetos en el Set y verificamos si el size antes y después de agregar es el mismo. Esto funciona porque Set.size devuelve un número basado en datos únicos (set solo agrega entradas si los datos son únicos). Si/cuando tiene nombres duplicados, el tamaño no aumentará (porque los datos no serán únicos), lo que significa que ya habríamos visto el nombre actual y devolverá verdadero.


Versión ECMA Script 5

Si no tiene soporte para Set , entonces puede usar un objeto JavaScript normal, como este

 var seen = {}; var hasDuplicates = values.some(function(currentObject) { if (seen.hasOwnProperty(currentObject.name)) { // Current name is already seen return true; } // Current name is being seen for the first time return (seen[currentObject.name] = false); });

Lo mismo se puede escribir sucintamente, así

 var seen = {}; var hasDuplicates = values.some(function (currentObject) { return seen.hasOwnProperty(currentObject.name) || (seen[currentObject.name] = false); });

Nota: En ambos casos, usamos Array.prototype.some porque provocará un cortocircuito. En el momento en que obtenga un valor verdadero de la función, devolverá true inmediatamente, no procesará el resto de los elementos.

over 4 years ago · Santiago Trujillo Report

0

En TS y ES6, puede crear un nuevo conjunto con la propiedad de ser único y comparar su tamaño con la matriz original.

 const values = [ { name: 'someName1' }, { name: 'someName2' }, { name: 'someName3' }, { name: 'someName1' } ] const uniqueValues = new Set(values.map(v => v.name)); if (uniqueValues.size < values.length) { console.log('duplicates found') }

over 4 years ago · Santiago Trujillo 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!