Analise o seguinte trecho de código em Javascript:function m...

Próximas questões
Com base no mesmo assunto
Q2171706 Programação

Analise o seguinte trecho de código em Javascript:

function myFunction(parameter) {

  const a = parameter.map(p => {

     return p.value

  })

const b = a.reduce((c, d) => {

      return c *= d * 3

  }, 1)

return b

}

console.log(myFunction([{ name: 'a', value: 3 }, { name : 'b', value: 18 }]))


O que será impresso na saída padrão?

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E - 486

Para resolver esta questão e alcançar corretamente a alternativa E, precisamos entender o funcionamento das funções map() e reduce() em JavaScript, além de reconhecer como operações aritméticas são realizadas dentro destas funções.

A função map() cria um novo array com os resultados da chamada de uma função para cada elemento do array original. No caso do código apresentado, map() está sendo aplicado ao parâmetro parameter, que é um array de objetos. Cada objeto tem uma propriedade value que é extraída e retorna um novo array somente com esses valores. Assim, o array a se tornará [3, 18].

Em seguida, a função reduce() é usada para reduzir o array a um único valor. A função passada para reduce() multiplica o acumulador c pelo valor atual d, multiplicado por 3, e o valor inicial do acumulador é definido como 1. Portanto, a operação realizada é uma multiplicação acumulativa dos elementos do array, cada um deles triplicado.

Calculando passo a passo:

  • Inicialmente, o acumulador c é 1 (valor inicial), e o primeiro valor d do array é 3. A multiplicação é 1 * 3 * 3, resultando em 9.
  • Esse valor agora atua como o acumulador na próxima iteração, onde d é 18. A multiplicação é 9 * 18 * 3, resultando em 486.

Portanto, myFunction([{ name: 'a', value: 3 }, { name : 'b', value: 18 }]) retorna 486, que é a resposta correta, representada pela alternativa E.

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

reduce itera sobre o array acumulando o resultado final, precisa sempre lembrar que ele acumula

aquele 1 solto ali no final, depois do "return c *= d * 3" vai ser na verdade o valor inicial do reduce que vai ser acumulado

1º iteração (d = 3)

c=1

c = 1 * (3 * 3) = 9

2º iteração(d = 18)

c = 9

c = 9 * (18 * 3) = 9 * 54 = 486

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo