← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

Considere o trecho JavaScript exibido a seguir. 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: A

No JavaScript, o método map percorre o vetor e chama a função de callback para cada elemento, passando alguns argumentos automáticos: o valor atual, o índice e o próprio array. Aqui, a função xpto foi declarada com dois parâmetros, x e y, então ela recebe o valor do elemento em x e o índice em y. Isso já é a chave da questão: o segundo parâmetro não é o próximo número do vetor, mas a posição do item. Assim, a cada rodada, o retorno será x * y, ou seja, valor vezes índice. Fazendo as contas: 1*0 = 0, 2*1 = 2, 3*2 = 6, 4*3 = 12 e 5*4 = 20. O array resultante exibido no alert é, portanto, 0,2,6,12,20. Esse comportamento é bem típico do JavaScript e está alinhado com a especificação do Array.prototype.map: a callback recebe value, index e array. Muita gente olha só para o conteúdo do vetor e esquece do índice, e aí a pegadinha funciona bonito.

Continue treinando

Questões relacionadas