Operator spread v JavaScriptu

V ES6 se je pojavil poseben operator ..., imenovan spread.

Ko operator spread stoji pred matriko (seznamom), jo razdeli na posamezne vrednosti, spremenivši matriko v niz parametrov, potrebnih za klic funkcije.

Zagotovo zveni nerazumljivo, zato poglejmo preprost primer. Naj imamo funkcijo, ki sprejme 3 parametre in vrne njihovo vsoto:

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

Naj imamo tudi matriko treh elementov:

javascriptlet arr = [1, 2, 3];

Očitno je, da te matrike ne moremo preprosto prenesti kot parameter funkcije, takole:

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

Kajti v tem primeru bo celotna matrika padla v prvi parameter funkcije, v ta parameter pa je potrebno prenesti številko (in tudi v ostale parametre prav tako).

Seveda lahko ravnamo na naslednji način:

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

Toda obstaja tudi enostavnejša pot - uporabiti operator spread:

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

Prisotnost spremenljivke ni obvezna - spread lahko uporabimo neposredno na matriki:

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

Podana je matrika:

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

Podana je tudi funkcija:

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

S pomočjo navedene funkcije poiščite vsoto elementov matrike.