Artículo original escrito por Kingsley Ubah
Artículo original JavaScript Array.filter() Tutorial – How to Iterate Through Elements in an Array
Traducido y adaptado por Santiago Yanguas
El método Array.filter()
es posiblemente el método más importante y ampliamente utilizado para iterar sobre un arreglo en JavaScript.
El funcionamiento del método filter()
es muy sencillo. Consiste en filtrar uno o más elementos (un subconjunto) de una colección más grande de elementos (un superconjunto) basándose en alguna condición/preferencia.
Todos hacemos esto todos los días, ya sea leyendo, eligiendo a nuestros amigos o a nuestro cónyuge, eligiendo qué película ver, etc.
El método Array.filter()
en JavaScript
El método filter()
toma una función callback y llama a esa función para cada elemento sobre el que itera dentro del arreglo de destino. La función callback de llamada puede tomar los siguientes parámetros:
valorActual
: Es el elemento del arreglo sobre el que se está iterando actualmente.indice
: Es la posición del índice delvalorActual
dentro del arreglo.arreglo
: Representa el arreglo de destino(final) junto con todos sus elementos.
El método filter
crea un nuevo arreglo y devuelve todos los elementos que pasan la condición especificada en la llamada en el callback.
Cómo usar el método filter()
en JavaScript
En los siguientes ejemplos, demostraré cómo se puede utilizar el método filter()
para filtrar elementos de un arreglo en JavaScript.
filter()
Ejemplo 1: Cómo filtrar elementos de un arreglo
En este ejemplo, filtramos todas las personas que son niños pequeños (cuya edad está comprendida entre 0 y 4 años).
filter()
Ejemplo 2: Cómo filtrar elementos en función de una propiedad concreta
En este ejemplo, solo filtraremos los miembros del equipo que sean desarrolladores.
En el ejemplo anterior, hemos filtrado a los desarrolladores. Pero, ¿y si queremos filtrar a todos los miembros que no son desarrolladores?
Podríamos hacerlo:
let equipo = [
{
nombre: "aaron",
posicion: "developer"
},
{
nombre: "beth",
posicion: "ui designer"
},
{
nombre: "cara",
posicion: "developer"
},
{
nombre: "daniel",
posicion: "content manager"
},
{
nombre: "ella",
posicion: "cto"
},
{
nombre: "fin",
posicion: "backend engineer"
},
{
nombre: "george",
posicion: "developer"
},
]
let noDesarrolladores = equipo.filter(miembro => miembro.posicion !== "developer")
console.log(noDesarrolladores);
/*
[
{
name: "beth",
position: "ui designer"
},
{
name: "daniel",
position: "content manager"
},
{
name: "ella",
position: "cto"
},
{
name: "fin",
position: "backend engineer"
}
]
*/
filter()
Ejemplo 3: Cómo acceder a la propiedad índice
Se trata de un concurso. En esta competición, hay tres ganadores. El primero obtendrá la medalla de oro, el segundo la de plata y el tercero, la de bronce.
Utilizando el filter
y accediendo a la propiedad del indice
de cada elemento en cada iteración, podemos filtrar cada uno de los tres ganadores en diferentes variables.
filter()
Ejemplo 4: Cómo utilizar el parámetro arreglo
Uno de los usos más comunes del tercer parámetro (arreglo) es inspeccionar el estado del arreglo sobre el que se está iterando. Por ejemplo, podemos comprobar si queda otro elemento en el arreglo. Dependiendo del resultado, podemos especificar que sucedan diferentes cosas.
En este ejemplo, vamos a definir un arreglo de cuatro personas. Sin embargo, como solo puede haber tres ganadores, la cuarta persona de la lista tendrá que ser descontada.
Para poder hacer esto, necesitamos obtener información sobre el arreglo de destino en cada iteración.
Cómo usar el objeto de contexto
Además de la función de devolución de llamada, el método filter()
también puede recibir un objeto de contexto.
Este objeto puede ser referido desde dentro de la función del callback usando la referencia de la palabra clave this
.
filter()
Ejemplo 5: Cómo acceder al objeto contexto con this
Esto va a ser similar al ejemplo 1
. Vamos a filtrar a todas las personas que tengan entre 13 y 19 años (adolescentes).
Sin embargo, no codificaremos los valores dentro de la función callback. En su lugar, definiremos estos valores 13 y 19 como propiedades dentro del objeto range
, que posteriormente pasaremos a filter
como el objeto contexto (segundo parámetro).
Pasamos el objeto rango
como segundo argumento a filter()
. En ese momento, se convirtió en nuestro objeto de contexto. En consecuencia, pudimos acceder a nuestros rangos superior e inferior en nuestra función de devolución de llamada con la referencia this.alto
y this.bajo
respectivamente.
Conclusiones
El método filter()
del arreglo, filtra los elementos que coinciden con la expresión del callback y los devuelve.
Además de la función del callback, el método filter
también puede tomar un objeto de contexto como segundo argumento. Esto te permitirá acceder a cualquiera de sus propiedades desde la función callback usando this
.
Espero que hayas sacado algo útil de este artículo.
Si quieres aprender más sobre el desarrollo web, no dudes en visitar mi Blog.
Gracias por leer y hasta pronto.
P/S: Si, estás aprendiendo JavaScript, he creado un eBook que enseña 50 temas de JavaScript con notas digitales dibujadas a mano. Compruébalo aquí.