Olá, Renato!
A raiz da questão é como passar funções como parâmetro!
A gente pode ver como isso foi criado tentando fazer uma função nossa.
Vamos chamá-la de paraCada
, uma tradução do forEach
. :D
Essa função vai se genérica e será responsável percorrer um array qualquer, "encapsulando" o for
e a variável i
:
function paraCada(array) {
for (var i = 0; i < array.length; i++) {
var elemento = array[i];
//aqui eu faço algo!
}
}
A questão é, se eu quero que a função paraCada
seja genérica, o que eu coloco ali no meio do for?
Aí que entra uma questão muito bonita do JS: você pode por funções em variáveis e até passá-las como parâmetro!
Então, posso receber um parâmetro chamado `outraFuncao, por exemplo, e invocar essa outra função, passando o elemento do array:
function paraCada(array, outraFuncao) {
for (var i = 0; i < array.length; i++) {
var elemento = array[i];
//aqui eu faço algo!
outraFuncao(elemento);
}
}
Na hora de usar o paraCada
, como é que eu faço? Assim, ó:
var nomes = ["Douglas", "Flávio", "Nico", "Rômulo", "Leonardo"];
paraCada(nomes, function(nome) {
console.log(nome + " é instrutor da Alura");
});
Chamei a função paraCada
, que é responsável por fazer o for
, e passei uma função como parâmetro que faz o console.log
.
Posso percorrer outros arrays e fazer outras coisas:
var numeros = [10, 20, 30];
var soma = 0;
paraCada(numeros, function(numero) {
soma += numero;
});
console.log(soma);
Vai imprimir 60.