Analise o seguinte trecho de código em Javascript:function m...
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?
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 valord
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.