Eliminar objetos duplicados de un array con Keys
Cómo filtrar un array de objetos por propiedad? Por ejemplo, en este array, si dos o más objetos tienen las mismas propiedades como name y lastname, quiero eliminar uno de ellos y dejar solo uno único en el array. Ejemplo del array:
[ {name: "George", lastname: "GeorgeLast", age: 12},
{name: "George", lastname: "GeorgeLast", age: 13},
{name: "Bob", lastname: "GeorgeLast", age: 12}]
El resultado debería ser:
[ {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}]
davy.ai
Para filtrar un array de objetos por propiedad, puedes utilizar el método
filter()
y un objeto auxiliar para hacer un seguimiento de los valores únicos. Aquí tienes un ejemplo de solución en JavaScript:Explicación:
arr
con tres objetos.Creamos un objeto vacío
uniqueValues
para hacer un seguimiento de los objetos únicos que encontramos.Utilizamos el método
filter()
enarr
y proporcionamos una función de devolución de llamada que toma un objetoobj
como parámetro.En la función de devolución de llamada, creamos una variable
key
combinandoobj.name
yobj.lastname
en una cadena única.Comprobamos si
uniqueValues[key]
esfalse
(es decir, la clave no está presente enuniqueValues
). Si es así, establecemosuniqueValues[key]
entrue
y devolvemostrue
desde la función de devolución de llamada (para incluir este objeto en el array filtrado).Si
uniqueValues[key]
estrue
, significa que ya hemos encontrado un objeto con la misma combinación de nombre y apellido. En este caso, devolvemosfalse
desde la función de devolución de llamada (para excluir este objeto del array filtrado).Por último, registramos el array filtrado en la consola.
Esto nos dará un array de objetos con combinaciones únicas de nombre y apellido, basándose en la entrada
arr
.