Método reduce
O método reduce reduz um array a
um único valor (reduz). Por exemplo,
com este método pode-se facilmente encontrar a soma
dos elementos do array (ou seja, o array é reduzido
a um único valor - a soma dos elementos).
O primeiro parâmetro do método reduce recebe
uma função, que será executada sequencialmente
para cada elemento do array, começando pelo primeiro.
Esta função pode receber 4 parâmetros.
Se estes parâmetros estiverem presentes (não são obrigatórios),
então o primeiro receberá automaticamente o resultado
intermediário, o segundo receberá o elemento
do array, o terceiro - seu número no array (índice),
e o quarto - o próprio array.
O resultado intermediário é uma variável
na qual será acumulado o valor
que o método reduce retornará quando
percorrer todos os elementos do array. Por exemplo,
pode-se acumular sequencialmente a soma
dos elementos do array: primeiro colocar o primeiro
elemento, na próxima passagem do loop
a soma do primeiro elemento e do segundo, na próxima
passagem - a soma do primeiro, do segundo e do terceiro.
E assim por diante, até o array terminar.
A função que reduce recebe
deve retornar o novo valor do resultado
intermediário.
O segundo parâmetro do método reduce especifica
o valor inicial do resultado intermediário.
Se não for especificado, será igual ao primeiro
elemento do array, e o processamento dos elementos começará
a partir do segundo elemento.
Sintaxe
array.reduce(function(resultadoIntermediario, elemento, indice, array) {
return novoResultadoIntermediario;
}, valorInicial);
Exemplo
Vamos encontrar a soma dos elementos do array:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(soma, elem) {
return soma + elem;
}, 0);
console.log(res);
Resultado da execução do código:
21
Exemplo
Vamos encontrar a soma de todos os números positivos do array:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(soma, elem) {
if (elem >= 0) {
return soma + elem;
} else {
return soma;
}
}, 0);
console.log(res);
Resultado da execução do código:
10