2
respostas

[Dúvida] não consegue identificar a principal diferençã entre os metodps map e foreach

não consegue identificar a principal diferençã entre os metodps map e foreach

2 respostas

Fala, Daniel! Tudo bom com você?

Então, os dois métodos têm funcionalidades bem parecidas, já que ambos percorrem os valores de uma lista executando uma função de callback em cada elemento (funções de callback é o nome dados às funções que são passadas em parâmetros para outras funções). A diferença entre os dois, são algumas particularidades e usos que você pode fazer. As principais diferenças são que o método map retorna um novo array que tem como elementos o resultado do que quer que tenha sido passado na função de callback. Ex: multiplicar cada elemento de um array por 2.

const array = [1, 2, 3, 4, 5]  //Definição do array
array.map(valor => valor * 2) //Já retorna os valores multiplicados por 2 [2, 4, 6, 8, 10]

Já o forEach não possui essa função, retornando um valor undefined caso tentarmos fazer da seguinte forma, semelhante ao map:

const array = [1, 2, 3, 4, 5]  //Definição do array
array.forEach(valor => valor * 2) //Retorna undefined

Para termos um array novo com os elementos de 'array' multiplicados por 2, precisaríamos fazer o seguinte:

const novoArray = []; //Definir um novo array vazio

array.forEach(valor =>
    novoArray.push(valor * 2) //Colocar nesse novo array vazio as informações do primeiro array multiplicados por 2.
).reverse() //Gera um erro no código

Enfim, espero que tenha conseguido deixar um pouco mais clara a diferença entre os dois métodos. Bons estudos pra você, Daniel, e abraços!

E a outra diferença entre os dois métodos é que a função map pode ser encadeada com outros métodos, da seguinte maneira, como exemplo: const array = [1, 2, 3, 4, 5] //Definição do array array.map(valor => valor * 2).reverse() //Um novo array com os elementos do array original multiplicados por dois, depois inverte a ordem desse array

const array = [1, 2, 3, 4, 5] //Definição do array array.forEach(valor => valor * 2).reverse() /

Olá, Daniel!

Uma forma de distinguir esses métodos é que map() cria um array novo, sem modificar o original, enquanto forEach() não cria nada e pode alterar o original.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software