Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Segundo parâmetro do método reduce

Bom dia. Pessoal uma duvida, no método reduce o segundo parâmetro passado ele é como se fosse um this.?

3 respostas

Olá Felix, tudo bem ?

Não entendi direito o que você quis dizer com: "como se fosse um this", na verdade o segundo parâmetro do reduce vai ser o valor inicial do nosso acumulador:

  • Vamos pegar por exemplos esse modelo de reduce
array.reduce( (acumulador, elementoAtual) => {
    return ....
}, valorInicial);

Nesse código a variável valorInicial será atribuída ao acumulador ao iniciar a função para que seja possível realizar as operações com cada elemento do array

Abraços e Bons Estudos!

Boa noite

model.negociacoes.reduce((total, n) => total + n.volume,0.0)  

Essa função veio do curso JS avançado I O parâmetro que eu quero passar é uma propriedade do meu objeto chamada "volume", pra isso eu uso uma variável "n", este n seria como um "this.volume"?

Estou postando pois não entendi, porque não passar 'this.volume' se é justamente esse parâmetro que quero passar para minha função e fazer a soma delas.

solução!

Opa Felix, agora ficou mais fácil :)

Na verdade esse segundo parâmetro não é do reduce e sim da função de callback, mas vou explicar:

Quando fazemos model.negociacoes.reduce estamos pegando o array de negociações, então vamos supor que ele está dessa maneira:

_negociacoes = [ negociacao1, negociacao2, negociacao3, negociacao4, negociacao5];

E estamos passando a função que será executado em cada elemento, em nosso caso essa função é (total, n) => total + n.volume

Isso quer dizer que o n irá começar como o negociacao1 (primeiro elemento do array) e iremos somar o valor do negociacao1.volume, depois n será o negociacao2 e dessa forma iremos passar por todas negociações e somando seu volume

Agora em relação a sua dúvida:

Estou postando pois não entendi, porque não passar 'this.volume' se é justamente esse parâmetro que quero passar para minha função e fazer a soma delas.

Na verdade não temos como acessar o this.volume pois o que temos é apenas um array de negociação, então o this só iria referenciar o próprio array que não tem essa propriedade, no caso o n irá referenciar cada negociação, e dessa forma temos acesso ao volume :)

Conseguiu compreender? Abraços e Bons Estudos!