1
resposta

[Dúvida] Exercício 2

Confesso que tive dúvidas na resolução desse exercício. Num primeiro momento eu tentei resolver usando o forEach, mas o código não fazia sentido, muito no que diz respeito a estrutura.

Ao recorrer a resolução, observei que o instrutor resolveu assim:

function executaOperacaoEmArray(array, funcaoCallback) { return array.map(funcaoCallback); }

function dobraNumero(num) { return num * 2; }

const listaNumeros = [1, 2, 3]; const listaNumerosDobrados = executaOperacaoEmArray(listaNumeros, dobraNumero); console.log(listaNumerosDobrados);

Pergunta:

Como o parâmetro 'numero', da função 'dobrarNumero', foi passado para dentro da função 'executaOperacaoEmArray'.

**Teria sido passado de forma interna pela método .map( ), sendo ele o responsável por fazer o manejo de cada um dos elementos do array à cada passo do loop? **

Me recordo vagamente de ter ouvido dizer em uma aula desse curso que o forEach 'trabalha dessa forma', por isso minha associação.

1 resposta

Bom dia, Rosemberg! Como vai?

Quando você usa o método map() em um array, ele itera sobre cada elemento do array e aplica a função de callback (neste caso, dobraNumero) a cada elemento. O map() é responsável por passar cada elemento do array, um por um, como argumento para a função de callback.

No seu exemplo, a função executaOperacaoEmArray recebe um array e uma função de callback (funcaoCallback). Dentro dessa função, array.map(funcaoCallback) é chamado. O map() pega cada elemento do array e o passa como argumento para funcaoCallback. No caso do seu exemplo, funcaoCallback é dobraNumero, que recebe um número e retorna o dobro dele.

Então, sim, o método map() é o responsável por passar cada elemento do array para a função dobraNumero, de forma interna, durante a iteração. Isso é semelhante ao que acontece com o forEach, que também passa cada elemento do array para a função de callback fornecida, mas a diferença é que map() retorna um novo array com os resultados, enquanto forEach não retorna nada.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.