El método filter() de JavaScript es una herramienta muy útil para filtrar elementos de un arreglo en base a ciertas condiciones. Funciona recorriendo cada elemento del arreglo y aplicando una función de filtro a cada uno. La función de filtro recibe cada elemento como argumento y debe devolver true o false, dependiendo de si el elemento cumple o no ciertas condiciones. Los elementos del arreglo que cumplen las condiciones se incluyen en el nuevo arreglo, mientras que los que no cumplen se descartan.
Vamos a ver su funcionamiento con algunos ejemplos.
En este ejemplo de uso de filter() se obtienen solo los números pares de un arreglo de números:
let numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let pares = numeros.filter(function(numero) {
return numero % 2 == 0;
});
console.log(pares);
// [2, 4, 6, 8, 10]
La función de filtro comprueba si el número es par (es decir, si el resto al dividir entre 2 es igual a 0) y devuelve true si lo es. Los números pares se incluyen en el nuevo arreglo "pares" y los impares se descartan.
Otro ejemplo es para obtener solo los objetos de un arreglo de objetos que cumplen cierta condición:
let personas = [
{ nombre: "Juan", edad: 30 },
{ nombre: "Maria", edad: 25 },
{ nombre: "Pedro", edad: 35 },
{ nombre: "Ana", edad: 20 }
];
let mayores = personas.filter(function(persona) {
return persona.edad >= 30;
});
console.log(mayores);
// [
// { nombre: "Juan", edad: 30 },
// { nombre: "Pedro", edad: 35 }
// ]
En este ejemplo, la función de filtro comprueba si la edad de la persona es mayor o igual a 30 y devuelve true si lo es. Los objetos del arreglo que cumplen la condición se incluyen en el nuevo arreglo "mayores" y los que no cumplen se descartan.
Un más ejemplo de uso de filter() para obtener solo los elementos de un arreglo que contengan una determinada letra:
let palabras = ["casa", "perro", "gato", "mesa", "silla"];
let conS = palabras.filter(function(palabra) {
return palabra.includes("s");
});
console.log(conS);
// ["casa", "mesa", "silla"]
En este ejemplo, la función de filtro comprueba si la palabra incluye la letra "s" y devuelve true si lo es. Las palabras que cumplen la condición se incluyen en el nuevo arreglo "conS" y las que no cumplen se descartan.
Un último ejemplo donde se obtienen solo los objetos de un arreglo que tengan una determinada propiedad:
let objetos = [
{ nombre: "objeto 1", color: "rojo" },
{ nombre: "objeto 2", color: "verde" },
{ nombre: "objeto 3" },
{ nombre: "objeto 4", color: "azul" }
];
let conColor = objetos.filter(function(objeto) {
return objeto.hasOwnProperty("color");
});
console.log(conColor);
// [
// { nombre: "objeto 1", color: "rojo" },
// { nombre: "objeto 2", color: "verde" },
// { nombre: "objeto 4", color: "azul" }
// ]
En este ejemplo, la función de filtro comprueba si el objeto tiene la propiedad "color" y devuelve true si lo tiene. Los objetos del arreglo que cumplen la condición se incluyen en el nuevo arreglo "conColor" y los que no cumplen se descartan.