Operador spread en JavaScript

En ES6 apareció un operador especial ..., llamado spread.

Cuando el operador spread se coloca antes de un array, divide este array en valores individuales, transformando el array en un conjunto de parámetros necesarios para la llamada a la función.

Probablemente suena complicado, así que veamos un ejemplo simple. Supongamos que tenemos una función que toma 3 parámetros y devuelve su suma:

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

Supongamos también que tenemos un array de tres elementos:

javascriptlet arr = [1, 2, 3];

Obviamente, no podemos simplemente tomar y pasar este array como parámetro a la función, así:

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

Porque en este caso todo el array caería en el primer parámetro de la función, y en este parámetro es necesario pasar un número (y también en los demás parámetros).

Por supuesto, se podría hacer lo siguiente:

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

Pero hay una forma más sencilla: usar el operador spread:

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

La presencia de una variable no es obligatoria - se puede aplicar spread directamente al array:

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

Se da un array:

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

También se da una función:

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

Encuentra usando la función proporcionada la suma de los elementos del array.