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

155
Views
Eliminar objetos duplicados de una matriz con claves

¿Cómo filtrar una matriz de objetos por propiedad? por ejemplo, en esta matriz, si dos o más objetos tienen las mismas propiedades, como el nombre y el apellido , quiero eliminar cualquiera de ellos y dejar solo uno único en una matriz. ejemplo arr:

 [ {name: "George", lastname: "GeorgeLast", age: 12}, {name: "George", lastname: "GeorgeLast", age: 13}, {name: "Bob", lastname: "GeorgeLast", age: 12}]

el resultado debe ser cualquiera

 [ {name: "George", lastname: "GeorgeLast", age: 13}, {name: "Bob", lastname: "GeorgeLast", age: 12}]

o

 [ {name: "George", lastname: "GeorgeLast", age: 12}, {name: "Bob", lastname: "GeorgeLast", age: 12}]
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Aplique la técnica que se muestra en esta respuesta , que es:

 function onlyUnique(value, index, self) { return self.indexOf(value) === index; }

... pero usando findIndex con algunos criterios en lugar de solo indexOf .

 let people = [ { name: "George", lastname: "GeorgeLast", age: 12 }, { name: "George", lastname: "GeorgeLast", age: 13 }, { name: "Bob", lastname: "GeorgeLast", age: 12 } ] let result = people.filter( (person, index) => index === people.findIndex( other => person.name === other.name && person.lastname === other.lastname )); console.log(result);

En cuanto a si mantiene a George de 12 años o a George de 13 años, es una cuestión de cómo funciona findIndex , que resulta que devuelve el primer elemento coincidente. Entonces, en su caso de ejemplo, mantendrá a George, de 12 años.

about 4 years ago · Juan Pablo Isaza Report

0

Otra solución.
Aquí no necesita iterar a través de la lista n * n/2 veces (si cuento correctamente).
Por otro lado, este parece menos conciso y usa más memoria.
Usa el que prefieras.

 const arr = [ {name: "George", lastname: "GeorgeLast", age: 12}, {name: "George", lastname: "GeorgeLast", age: 13}, {name: "Bob", lastname: "GeorgeLast", age: 12} ]; const obj = {} arr.forEach(v => { if (!obj[v.name]) { obj[v.name] = {} } if (!obj[v.name][v.lastname]) { obj[v.name][v.lastname] = v; } }) const result = []; Object.values(obj).forEach(nameObj => Object.values(nameObj).forEach(surnObj => result.push(surnObj)) ); console.log(result)

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!