Filter(): Filtrando arrays com JavaScript
Um filtro em JavaScript é um método que permite selecionar elementos de uma matriz ou objeto com base em determinados critérios. Isso simplifica a tarefa de localizar e extrair dados específicos, poupando tempo e esforço na manipulação de conjuntos de dados extensos.
Métodos de Filtro em JavaScript
Em JavaScript, existem vários métodos comumente usados para filtrar dados, sendo os principais:
Filter()
O método filter() é usado para criar uma nova matriz contendo apenas os elementos que atendem a determinada condição especificada em uma função.
Map()
Diferente do filter(), o método map() não filtra elementos, mas cria uma nova matriz com os resultados de chamar uma função fornecida para cada elemento na matriz.
Reduce()
O método reduce() não é exclusivamente um método de filtragem, mas também pode ser usado para realizar operações de filtragem complexas ao reduzir a matriz a um valor único.
Utilizando o filter() para filtrar
Ele cria um novo array com elementos que passam por um determinado teste especificado por uma função. Por exemplo:
// Array original
const numeros = [10, 20, 30, 40, 50];
// Filtrar números maiores que 25
const numerosMaioresQue25 = numeros.filter(numero => numero > 25);
console.log(numerosMaioresQue25); // Saída: [30, 40, 50]
No exemplo acima os numerosMaioresQue25 conterão apenas os números maiores que 25 do array original numeros.
Utilizando o Método Map() em Filtragem
Embora o map() não seja um método de filtragem direta, pode ser usado em conjunto com filter() para manipular dados de forma mais abrangente.
const prices = [10, 20, 30, 40, 50];
const discountedPrices = prices.filter(price => price > 20).map(price => price * 0.9);
// Resultado: [27, 36, 45]
Filtrando com o Método Reduce()
Embora o método reduce() não seja tradicionalmente um método de filtragem, sua capacidade de reduzir uma matriz a um único valor pode ser empregada para realizar operações de filtragem mais complexas.
const numbers = [1, 2, 3, 4, 5];
const sumEvenNumbers = numbers.reduce((acc, num) => {
if (num % 2 === 0) {
return acc + num;
}
return acc;
}, 0);
// Resultado: 6 (soma dos números pares)