Considere o trecho JavaScript exibido a seguir. const a = [...
const a = [1,2,3,4,5]; const b = a.map(xpto); alert(b); function xpto (x, y) { return x * y; }
Assinale o conteúdo exibido na execução do script acima.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A - 0,2,6,12,20
Esta questão aborda o uso da função map em JavaScript, que é utilizada para transformar os elementos de um array aplicando uma função a cada um dos seus itens. A função map chama a função callback fornecida uma vez para cada elemento do array, em ordem, e constrói um novo array com os valores retornados pela função callback.
Para resolver a questão, precisamos entender o que a função xpto faz. A função xpto recebe dois parâmetros, x e y, e retorna o produto deles (x * y). Na função map, x representa o elemento atual do array que está sendo processado e y representa o índice desse elemento no array.
Portanto, quando a função map é aplicada ao array a, que contém os valores [1, 2, 3, 4, 5], a função callback xpto é chamada para cada elemento do array, com os seguintes valores de x (elemento) e y (índice):
- (1, 0) -> 1 * 0 = 0
- (2, 1) -> 2 * 1 = 2
- (3, 2) -> 3 * 2 = 6
- (4, 3) -> 4 * 3 = 12
- (5, 4) -> 5 * 4 = 20
O novo array resultante dessas operações será então [0, 2, 6, 12, 20], que é exatamente o que a alternativa A indica. Por isso, a alternativa A é a correta.
É importante notar que a função map não altera o array original (no nosso caso, o array a), ela cria um novo array com os resultados das operações realizadas pela função fornecida. Esse é um conceito fundamental em programação funcional, onde funções não causam efeitos colaterais e trabalham com dados imutáveis.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Conceitos:
- Quando map recebe uma função com 2 parâmetros, o primeiro será o elemento atual, e o segundo será seu índice
- A função xpto foi declarada no final, mas vai ser movida para o topo (característica chamada "hosting")
Execução para o vetor [1,2,3,4,5]:
- elemento * índice
- 1*0 = 0
- 2*1 = 2
- 3*2 = 6
- 4*3 = 12
- 5*4 = 20
GAB A
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
o array a é o input da funcao map()
const b = a.map(xpto);
//declara var b e atribui a ela o resultado da funcao map() sobre o array a. map usa a funcao xpto em CADA ELEMENTO DO ARRAY, retornando um novo arrat com os valores convertidos, o qual é atribuido á var b.
IMPORTANT: a funcao xpto, usada em sua configuracao default, TRANSFORMA os elementos do array MULTIPLICANDO CADA ELEMENTO PELO VALOR DA POSICAO DE SEU INDEX. eg.: [1,2,3,4,5] retorna [0,2,6,12,20], sendo 1*0, 2*1, 3*2,4*3,5*4.....
const a = [1,2,3,4,5];
const b = a.map(xpto);
alert(b);
function xpto (x, y) { return x * y; }
O método passa para a função o valor do elemento atual do array como e o índice desse elemento como . Por fim, o código mostra um alerta com o valor de .
Vamos começar:
Para a = 1 temos o map fazendo 1 = x e y=0(1 índice do array). A funcion xpto tem o return 1*0 = 0;
Para a = 2 temos o map fazendo 2 = x e y=1(2 índice do array). A funcion xpto tem o return 2*1 = 1;
Para a = 3 temos o map fazendo 3 = x e y=2(3 índice do array). A funcion xpto tem o return 3*2 = 6;
Para a = 4 temos o map fazendo 4 = x e y=3(4 índice do array). A funcion xpto tem o return 4*3 = 12;
Para a = 5 temos o map fazendo 5 = x e y=4(5 índice do array). A funcion xpto tem o return 5*4 = 20;
O map recebe de array, joga em uma função para calcular o produto de x*y e retorna para b o array de [0,1,6,12,20]
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo