Funções de Callback e o Método forEach
- Definição: Em JavaScript, uma função callback é uma função que é passada como argumento para outra função e é executada após a função principal ter terminado sua execução.
- Método
forEach(): Este método é usado para iterar sobre cada elemento em um array e executar uma operação em cada elemento. A função de callback em forEach pode receber até três argumentos: o elemento atual, o índice do elemento atual e o array no qual forEach foi chamado.
const numbers = [1, 2, 3, 4, 5];
// Result: 2 4 6 8 10
numbers.forEach((number) => {
console.log(number * 2);
});
Funções de Ordem Superior
- Definição: Uma função de ordem superior recebe uma ou mais funções como argumentos e retorna uma função ou valor como resultado.
function operateOnArray(arr, operation) {
const result = [];
for (let i = 0; i < arr.length; i++) {
result.push(operation(arr[i]));
}
return result;
}
function double(x) {
return x * 2;
}
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = operateOnArray(numbers, double);
console.log(doubledNumbers); // [2, 4, 6, 8, 10]
- Método
map(): Este método é usado para criar um novo array aplicando uma função dada a cada elemento do array original. A função de callback pode aceitar até três argumentos: o elemento atual, o índice do elemento atual e o array no qual map foi chamado.
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map((num) => num * 2);
console.log(numbers); // [1, 2, 3, 4, 5]
console.log(doubled); // [2, 4, 6, 8, 10]
- Método
filter(): Este método é usado para criar um novo array com elementos que passam em um teste especificado, tornando-o útil para extrair itens seletivamente com base em critérios. Assim como o método map, a função callback para o método filter aceita os mesmos três argumentos: o elemento atual sendo processado, o índice e o array.
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const evenNumbers = numbers.filter((num) => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6, 8, 10]
reduce() Method: This method is used to process an array and condense it into a single value. Este valor único pode ser um número, uma string, um objeto ou até mesmo outro array. The reduce() method works by applying a function to each element in the array, in order, passing the result of each calculation on to the next. Esta função é frequentemente chamada de função reducer. A função reducer recebe dois parâmetros principais: um acumulador e o valor atual. O acumulador é onde você armazena o resultado acumulado das suas operações e o valor atual é o elemento do array que está sendo processado.
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce(
(accumulator, currentValue) => accumulator + currentValue,
0
);
console.log(sum); // 15
Encadeamento de Métodos
- Definição: Encadeamento de métodos é uma técnica de programação que permite chamar múltiplos métodos no mesmo objeto em uma única linha de código. Essa técnica pode tornar seu código mais legível e conciso, especialmente ao realizar uma série de operações no mesmo objeto.
const result = " Hello, World! "
.trim()
.toLowerCase()
.replace("world", "JavaScript");
console.log(result); // "hello, JavaScript!"
Trabalhando com o método sort
- Definição: O método
sort é usado para ordenar os elementos de um array e retornar uma referência ao array ordenado. Nenhuma cópia é feita neste caso porque os elementos são ordenados no local.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
console.log(fruits); // ["Apple", "Banana", "Mango", "Orange"]
Se você precisar ordenar números, então será necessário passar uma função de comparação. O método
sort converte os elementos em strings e depois compara suas sequências de valores de unidades de código UTF-16. Unidades de código UTF-16 são os valores numéricos que representam os caracteres na string. Exemplos de unidades de código UTF-16 são os números 65, 66 e 67 que representam os caracteres "A", "B" e "C" respectivamente. Então o número 200 aparece antes do número 3 em um array, porque a string "200" vem antes da string "3" ao comparar suas unidades de código UTF-16.
const numbers = [414, 200, 5, 10, 3];
numbers.sort((a, b) => a - b);
console.log(numbers); // [3, 5, 10, 200, 414]
Os parâmetros
a e
b são os dois elementos que estão sendo comparados. A função de comparação deve retornar um valor negativo se
a deve vir antes de
b, um valor positivo se
a deve vir depois de
b e zero se
a e
b forem iguais.
Trabalhando com os métodos every e some
every() Method: This method tests whether all elements in an array pass a test implemented by a provided function. O método every() retorna true se a função fornecida retornar true para todos os elementos do array. Se algum elemento falhar no teste, o método retorna imediatamente false e para de verificar os elementos restantes.
const numbers = [2, 4, 6, 8, 10];
const hasAllEvenNumbers = numbers.every((num) => num % 2 === 0);
console.log(hasAllEvenNumbers); // true
some() Method: This method checks if at least one element passes the test. O método some() retorna true assim que encontra um elemento que passa no teste. Se nenhum elemento passar no teste, ele retorna false.
const numbers = [1, 3, 5, 7, 8, 9];
const hasSomeEvenNumbers = numbers.some((num) => num % 2 === 0);
console.log(hasSomeEvenNumbers); // true