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

Spread operator ES6

Pessoal,

No exercicio que temso que modificar a passagem de parametros para a função somaNumeros() para aceitar o spread oparator dessa maneira somaNumeros(...numeros) não deveria ter uma mudança no comportantemento interno da função também? Digo isso porque ela está dessa maneira:

function somaNumeros(numero1, numero2){
    return numero1+numero2;
}

Não deveria ficar algo assim?

function somaNumero(...numero){ 

    let acumulator=0; 
    numero.map(n=> acumulator+=n); 
    return acumulator 
}

Já agradeço

6 respostas

Olá, Guilherme.

Para funcionar somaNumero(...arr) não é necessário alterar a função.

As duas funções fazem comportamentos diferentes, a primeira soma apenas dois número e a segunda soma uma lista ou conjunto.

Existe o spread operator e rest parameter. O primeiro pega um array e desmembra em parametros de um método ou função. Isso para não termos que mudar o comportamento interno da função ou o parâmetro que é um array.

O rest parameter, sempre usado como último parâmetro de um método ou função permite passar um número de parametros x que serão considerados como um array.

Veja que são coisas diferentes.

solução!

Beleza?

Se não ficou claro grite! :) Aliás, chegou a testar a sua proposta e ver o resultado? Isso ajuda a entender o que acontece.

Opa valeu Flavio e Marco.

Obrigado pela a ajuda entendi a diferença.

Uma opção seria utilizar o reduce também, fazendo uso do 'rest parameter' já mencionado.

function somaNumero(...numeros) { 
    return numeros.reduce((a, b) => a + b, 0);
}