Operador spread em JavaScript

No ES6, surgiu um operador especial ..., chamado de spread.

Quando o operador spread é colocado antes de um array, ele divide esse array em valores individuais, transformando o array em um conjunto de parâmetros necessários para a chamada de uma função.

Provavelmente soa complicado, então vamos ver um exemplo simples. Suponha que temos uma função que recebe 3 parâmetros e retorna a soma deles:

javascriptfunction func(num1, num2, num3) {
  return num1 + num2 + num3;
}

Suponha que também temos um array de três elementos:

javascriptlet arr = [1, 2, 3];

Obviamente, não podemos simplesmente passar este array como parâmetro da função, assim:

javascriptlet arr = [1, 2, 3];
func(arr);

Pois, neste caso, todo o array seria passado para o primeiro parâmetro da função, e este parâmetro precisa receber um número (assim como os outros parâmetros também).

Claro, poderíamos fazer o seguinte:

javascriptlet arr = [1, 2, 3];
func(arr[0], arr[1], arr[2]);

Mas existe um caminho mais fácil - usar o operador spread:

javascriptlet arr = [1, 2, 3];
func(...arr);

A existência de uma variável não é obrigatória - podemos aplicar o spread diretamente ao array:

javascriptfunc(...[1, 2, 3]);
Задание 1

Dado o array:

javascriptlet arr = [1, 2, 3, 4, 5];

Dada também a função:

javascriptfunction func(num1, num2, num3, num4, num5) {
  return num1 + num2 + num3 + num4 + num5;
}

Encontre, usando a função fornecida, a soma dos elementos do array.