Questão de Programação — Linguagens de programação — FUNDATEC 2025
Programação›Linguagens de programação
Código
qg474911
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Nível
Superior
Cargo
Analista em Computação / Ênfase em Programação de Sistemas na Tecnologia JAVA
Considerando o seguinte trecho de código Javascript, qual será a saída após executá-lo?
A[ ]
B[123]
C[246]
D[2,4,6]
EAcusa erro
Revelar gabarito e comentário▾
GabaritoC — [246]
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
JavaScript: método map() e a saída do código
Gabarito: letra C — o código produz a saída [246]. O método map() percorre o array original e retorna um novo array com o resultado da função de callback aplicada a cada elemento; como o array original tem apenas um elemento (123), o resultado é um array com um único valor (246), e não um array com três elementos.
O método map() é um dos métodos de iteração de arrays mais cobrados em provas de JavaScript. Ele cria um novo array com os resultados da chamada de uma função fornecida em cada elemento do array original. A sintaxe básica é:
const novoArray = arrayOriginal.map((elemento, indice, array) => {
// retorna o novo valor para o elemento
});
A função de callback recebe três argumentos: o valor do elemento atual, o índice e o array original. No entanto, na maioria dos casos, usamos apenas o primeiro argumento. O map()não modifica o array original — ele retorna um novo array com o mesmo número de elementos, cada um transformado pela função.
Vamos aplicar isso ao código da questão. O array original é [123], ou seja, um array com um único elemento de valor 123. A função de callback é (x) => x * 2, que multiplica cada elemento por 2. Como há apenas um elemento, a função é executada uma única vez: 123 * 2 = 246. O resultado é um novo array contendo esse único valor: [246].
A pegadinha clássica desta questão é confundir o map() com um laço for que percorre os dígitos do número 123. Se o candidato pensar que o array é [1, 2, 3] (os dígitos separados), ele chegaria a [2, 4, 6] — que é a alternativa D. Mas o array é [123], um array com um único elemento numérico, não uma string ou uma lista de dígitos. O map() itera sobre os elementos do array, não sobre os caracteres de um número.
Outra confusão comum é achar que o map() modifica o array original. Na verdade, ele retorna um novo array, deixando o original intacto. Se o código fosse const resultado = arr.map(x => x * 2); console.log(arr);, a saída seria [123], não [246]. Mas a questão pede a saída do console.log(resultado), que é o novo array.
Guarde a distinção: map() transforma cada elemento e retorna um novo array do mesmo tamanho; forEach() apenas executa uma função para cada elemento sem retornar nada; filter() retorna um novo array apenas com os elementos que passam em um teste. É exatamente essa fronteira que as alternativas exploram.
1Array original [123]
2map() aplica x * 2
3Novo array [246]
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que a saída é [] (array vazio). Isso ocorreria se o array original fosse vazio ou se a função de callback nunca fosse executada. Mas o array tem um elemento (123), então o map() executa a função uma vez e retorna um array com um elemento. Não há nenhuma condição que impeça a execução.
Alternativa B — ❌ Incorreta
Afirma que a saída é [123]. Isso seria verdade se o map() não transformasse os elementos, mas a função x => x * 2 multiplica cada elemento por 2. O array original [123] vira [246]. A alternativa B seria correta se o código fosse const resultado = arr.map(x => x); ou se não houvesse transformação.
Alternativa C — ✅ Correta ⟵ GABARITO
O array original é [123], com um único elemento. O map() aplica a função x => x * 2 a esse elemento: 123 * 2 = 246. O resultado é um novo array com um único elemento: [246]. O console.log(resultado) imprime exatamente isso.
Alternativa D — ❌ Incorreta
Afirma que a saída é [2, 4, 6]. Esse seria o resultado se o array original fosse [1, 2, 3] (os dígitos separados) e cada um fosse multiplicado por 2. Mas o array é [123] — um único número, não uma lista de dígitos. O map() itera sobre os elementos do array, não sobre os caracteres de um número. Essa é a pegadinha central da questão.
Alternativa E — ❌ Incorreta
Afirma que o código acusa erro. Não há nenhum erro de sintaxe ou de execução. O código é válido: const arr = [123]; const resultado = arr.map(x => x * 2); console.log(resultado);. O map() existe em todos os arrays JavaScript e a função de callback é válida. A execução ocorre normalmente e imprime [246].
Gabarito: letra C — a saída é [246], pois o map() transforma o único elemento 123 em 246 e retorna um novo array com esse valor.