Extraiga objetos únicos por atributo de una array de objetos.

Dada una array de objetos y la tarea es devolver el objeto único por el atributo.

Ejemplos:

Input: 
[ { name: 'Geeks', id: 10 },
  { name: 'GeeksForGeeks', id: 10 },
  { name: 'Geeks', id: 20 },
  { name: 'Geeks', id: 10 } ]
Output:
[ { name: 'Geeks', id: 10 }, 
  { name: 'GeeksForGeeks', id: 10 } ]

Enfoque: supongamos que el nombre es un atributo que diferencia los objetos y necesitamos el objeto con un número de identificación mínimo si existen varios objetos para el mismo nombre. Use el mapa para almacenar objetos y verifique si se ven objetos similares o no.

  • Inicializar un mapa vacío.
  • Iterar a través de la array usando el método de filtro.
  • Compruebe si hay alguna entrada en el mapa con el mismo nombre que el objeto actual.
  • —-Si es verdadero: es decir, existe una entrada con el mismo nombre, compruebe si su id es menor que la id del objeto actual.
  • ——–Si es verdadero: es decir, la identificación del objeto actual es menor que la identificación del objeto devuelto por el mapa, entonces elimine la entrada del mapa e ingrese el objeto actual y devuelva verdadero.
  • ——–si es falso: es decir, la identificación del objeto actual es mayor que la identificación del objeto devuelto por el mapa, luego devuelve falso.
  • —-Si es falso: es decir, no hay ninguna entrada en el mapa con el mismo nombre, ingrese el objeto actual en el mapa.
  • Imprime objetos únicos.

Ejemplo:

<script>
objects = [{
    name: 'Geeks',
    id: 10
}, {
    name: 'GeeksForGeeks',
    id: 10
}, {
    name: 'Geeks',
    id: 20
}, {
    name: 'Geeks',
    id: 10
}];
  
let mymap = new Map();
  
unique = objects.filter(el => {
    const val = mymap.get(el.name);
    if(val) {
        if(el.id < val) {
            mymap.delete(el.name);
            mymap.set(el.name, el.id);
            return true;
        } else {
            return false;
        }
    }
    mymap.set(el.name, el.id);
    return true;
});
  
console.log(unique);
</script>

Producción:

[ { name: 'Geeks', id: 10 }, 
  { name: 'GeeksForGeeks', id: 10 } ]

Complejidad temporal: O(n)
Complejidad espacial: O(n)

Publicación traducida automáticamente

Artículo escrito por neerajnegi174 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *