es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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}]
Tags:  , , , ,

Answer

  1. Avatar for 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:

    const arr = [
      {name: "George", lastname: "GeorgeLast", age: 12},
      {name: "George", lastname: "GeorgeLast", age: 13},
      {name: "Bob", lastname: "GeorgeLast", age: 12}
    ];
    
    const uniqueValues = {};
    
    const filteredArr = arr.filter(obj => {
      const key = obj.name + obj.lastname;
      if (!uniqueValues[key]) {
        uniqueValues[key] = true;
        return true;
      }
      return false;
    });
    
    console.log(filteredArr);
    // Resultado: [ {name: "George", lastname: "GeorgeLast", age: 12}, {name: "Bob", lastname: "GeorgeLast", age: 12}]
    

    Explicación:

    1. En primer lugar, definimos el array de entrada arr con tres objetos.
    2. Creamos un objeto vacío uniqueValues para hacer un seguimiento de los objetos únicos que encontramos.

    3. Utilizamos el método filter() en arr y proporcionamos una función de devolución de llamada que toma un objeto obj como parámetro.

    4. En la función de devolución de llamada, creamos una variable key combinando obj.name y obj.lastname en una cadena única.

    5. Comprobamos si uniqueValues[key] es false (es decir, la clave no está presente en uniqueValues). Si es así, establecemos uniqueValues[key] en true y devolvemos true desde la función de devolución de llamada (para incluir este objeto en el array filtrado).

    6. Si uniqueValues[key] es true, significa que ya hemos encontrado un objeto con la misma combinación de nombre y apellido. En este caso, devolvemos false desde la función de devolución de llamada (para excluir este objeto del array filtrado).

    7. 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.

Comments are closed.