Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Parametros para função forEach

Bom dia a todos!

Amigos, gostaria de saber se é possivel informar outros parametros para uma função utilizando o forEach.

Eis meu exemplo.

let numerosNovos = [1,2,3,4,5];
let listB = [];

function numeroVezesX(numero,vezesX) {
    listB.push(numero * vezesX);
}

listA.forEach(numeroVezesX); 

Entendo que o forEach é invocado com 3 argumentos(valor,indice e o array que está sendo percorido), e gostaria de saber se a alguma forma de eu passar esses parametros diretamente na função que estou invocando.

No exemplo a cima gostaria que a saida fosse listB = [2,4,6,8,10] (o parametro vezesX = 2)

PS:Neste caso gostaria de uma aplicação utilizando o forEach, entendo que existem outras maneiras de fazer este tipo de operação, como com o map ou até mesmo reduce.

2 respostas
solução!

Cara, top, mas algumas coisas para apontar no seu codigo 1 - A variavel listA nao foi apontada, portanto nao pode ser usada 2 - o forEach vc usa em uma lista. Como numeroVezesX e uma funcao, faz sentido chamar ela dentro do forEach, porem faltaram os parametros nos parenteses, como numeroVezesX(parametro numero, parametro vezes)

Refiz ele aqui em baixo para voce comparar e entender melhor a ideia

let numerosNovos = [1,2,3,4,5];
let listB = [];

function numeroVezesX(numero,vezesX) {
    numero.forEach(function(num){
        listB.push(num * vezesX);
    })
}

numeroVezesX(numerosNovos,2)

No caso tem uma lista com numeros e uma lista que voce quer preencher, chamamos a funcao e dizemos qual a lista de numeros. No caso como voce quis multiplicar por 2, coloquei o valor 2 para o parametro vezesX da funcao, mas ainda sim os numeros recebidos pela funcao, sao uma lista! ai sim entra o forEach, para cada um deles eu crio uma funcao com um parametro "num" que vai ser preenchido por cada numero e pra cada um deles empurramos na "listB" o valor multiplicado pelo quanto voce quiser. Outra forma de fazer isso seria como abaixo

let numerosNovos = [1,2,3,4,5];
let listB = [];
numerosNovos.forEach(function(num){
    listB.push(num*2)
})

OBS: Desculpe a falta de acentos, estou usando um teclado americano

Kaue, muito obrigado pelo retorno e excplicação tão completa!

O conceito do forEach estava ficando complicado de entrar na minha cabeça, porém com a sua explicação e um pouco mais de estudo agora estou conseguindo usa-lo de forma mais inteligente.

Valeu mesmo!