Questão nº 38

Questão de Tecnologia da Informação · FGV TJ-MS 2024 (nº 38)

FGV2024Técnico de Nível Superior - Web DesignerTecnologia da Informação
Gabarito: Cver comentário ↓

Observe o seguinte script em JavaScript:

const vetor = [ [2, 0], [2, 4] ];


const saida = vetor.reduceRight((acc, v) =>
acc.join(v),
);


console.log(saida);

Ao ser executado, o script acima imprime no console:

Resposta comentada

Gabarito Alternativa C

reduceRight() é um método de array que processa os elementos de um array da direita para a esquerda, aplicando uma função "redutora" a cada elemento e acumulando um único valor de retorno. O método join() transforma os elementos de um array em uma única string, usando o argumento fornecido como separador.

  • (A) Incorreta: O resultado não corresponde à lógica de reduceRight e join com os valores fornecidos.
  • (B) Incorreta: Esta alternativa não pode ser obtida pela execução correta do script, pois a ordem e a forma como join utiliza o separador não levariam a este resultado.
  • (C) Correta: O método reduceRight é chamado sem um valor inicial para o acumulador. Nesses casos, ele usa o último elemento do array como valor inicial para acc e começa a iteração a partir do penúltimo elemento.
    1. acc (acumulador) inicia com [2, 4] (o último elemento de vetor).
    2. v (valor atual) é [2, 0] (o penúltimo elemento de vetor).
    3. A função de callback é executada: acc.join(v). Isso se traduz em [2, 4].join([2, 0]).
    4. O método join() espera uma string como separador. Quando um array ([2, 0]) é passado como separador, ele é implicitamente convertido para string usando seu método toString(), resultando em "2,0".
    5. A operação se torna [2, 4].join("2,0"). Isso significa que os elementos do array [2, 4] (que são 2 e 4) serão unidos usando "2,0" como separador.
    6. O resultado é 2 + "2,0" + 4, que forma a string "22,04".
      Como não há mais elementos para processar, este é o valor final de saida.
  • (D) Incorreta: Esta alternativa é um distrator tentador. Ela seria obtida se o aluno entendesse a ordem de reduceRight (começando com [2,4] como acc e [2,0] como v), mas interpretasse a função de callback como acc.join('') + ',' + v.join('') (ou seja, transformando cada sub-array em string e concatenando-os com uma vírgula), o que resultaria em "24" + "," + "20" = "24,20". No entanto, a função é acc.join(v), onde v é o separador, não um elemento a ser concatenado após ser transformado em string.
  • (E) Incorreta: O resultado não corresponde à lógica de reduceRight e join com os valores fornecidos.

Fonte: FGV TJ-MS 2024 Técnico de Nível Superior - Web Designer (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho