Questão nº 38
Questão de Tecnologia da Informação · FGV TJ-MS 2024 (nº 38)
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:
- A04,22;
- B20,24;
- C22,04; (alternativa correta)
- D24,20;
- E42,02.
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
reduceRightejoincom 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
joinutiliza 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 paraacce começa a iteração a partir do penúltimo elemento.acc(acumulador) inicia com[2, 4](o último elemento devetor).v(valor atual) é[2, 0](o penúltimo elemento devetor).- A função de callback é executada:
acc.join(v). Isso se traduz em[2, 4].join([2, 0]). - 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étodotoString(), resultando em"2,0". - A operação se torna
[2, 4].join("2,0"). Isso significa que os elementos do array[2, 4](que são2e4) serão unidos usando"2,0"como separador. - O resultado é
2+"2,0"+4, que forma a string"22,04".
Como não há mais elementos para processar, este é o valor final desaida.
- (D) Incorreta: Esta alternativa é um distrator tentador. Ela seria obtida se o aluno entendesse a ordem de
reduceRight(começando com[2,4]comoacce[2,0]comov), mas interpretasse a função de callback comoacc.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), ondevé 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
reduceRightejoincom os valores fornecidos.
Fonte: FGV TJ-MS 2024 Técnico de Nível Superior - Web Designer (Caderno Tipo 1). Reproduzida para fins de estudo.