[ Web Proxy ]
URL:
Viewing: https://es.javascript.info/task/array-unique [Back]  [Original]

Filtrar elementos nicos de un array
ES

Queremos que este proyecto de cdigo abierto est disponible para personas de todo el mundo.

Ayuda a traducir el contenido de este tutorial a tu idioma!

    Buscar en Javascript.info:
    Buscar en el tutorial:
    Light themeDark theme
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek
    regresar a la leccin

    Filtrar elementos nicos de un array

    importancia: 4

    Partiendo del array arr.

    Crea una funcin unique(arr) que devuelva un array con los elementos que se encuentran una sola vez dentro de arr.

    Por ejemplo:

    function unique(arr) {
      /* tu cdigo */
    }
    
    let strings = ["Hare", "Krishna", "Hare", "Krishna",
      "Krishna", "Krishna", "Hare", "Hare", ":-O"
    ];
    
    alert( unique(strings) ); // Hare, Krishna, :-O

    Abrir en entorno controlado con pruebas.

    solucin

    Recorramos los elementos dentro del array:

    • Para cada elemento vamos a comprobar si el array resultante ya tiene ese elemento.
    • Si ya lo tiene, ignora. Si no, agrega el resultado.
    function unique(arr) {
      let result = [];
    
      for (let str of arr) {
        if (!result.includes(str)) {
          result.push(str);
        }
      }
    
      return result;
    }
    
    let strings = ["Hare", "Krishna", "Hare", "Krishna",
      "Krishna", "Krishna", "Hare", "Hare", ":-O"
    ];
    
    alert( unique(strings) ); // Hare, Krishna, :-O

    El cdigo funciona, pero tiene un problema potencial de desempeo.

    El mtodo result.includes(str) internamente recorre el array result y compara cada elemento con str para encontrar una coincidencia.

    Por lo tanto, si hay 100 elementos en result y ninguno coincide con str, entonces habr recorrido todo el array result y ejecutado 100 comparaciones. Y si result es tan grande como 10000, entonces habr 10000 comparaciones.

    Esto no es un problema en s mismo, porque los motores JavaScript son muy rpidos, por lo que recorrer 10000 elementos de un array solo le tomara microsegundos.

    Pero ejecutamos dicha comprobacin para cada elemento de arr en el loop for.

    Entonces si arr.length es 10000 vamos a tener algo como 10000*10000 = 100 millones de comparaciones. Esto es realmente mucho.

    Por lo que la solucin solo es buena para arrays pequeos.

    Ms adelante en el captulo Map y Set vamos a ver como optimizarlo.

    Abrir la solucin con pruebas en un entorno controlado.


    Web Proxy Viewer  |  New URL  |  Original Page