Co to jest operator Spread i Rest w JavaScript?

JavaScript

readTime

4 min

Co to jest operator Spread i Rest w JavaScript?

W tym wpisie omówię operatory rest i spread, czyli trzy kropki ..., które są niezwykle przydatne w codziennej pracy z kodem.

Zapraszam do wspólnej nauki, gdzie dowiesz się jak 'rozsmarować' obiekty i tablice oraz jak przejść przez parametry funkcji w efektywny sposób.

Co to jest Operator Spread w JavaScript?

Operator spread (...) pozwala na rozproszenie elementów tablicy lub obiektu w miejscach, gdzie oczekiwane są listy wartości.

Dzięki niemu możemy łatwo kopiować, łączyć lub modyfikować tablice i obiekty.

Przykład Użycia Operatora Spread z Tablicami

Załóżmy, że masz dwie tablice:

javascript
const numbers1 = [1, 2, 3];
const numbers2 = [4, 5, 6];

Chcesz je połączyć w jedną tablicę. Możesz użyć operatora spread:

javascript
const combinedNumbers = [...numbers1, ...numbers2];
console.log(combinedNumbers); // [1, 2, 3, 4, 5, 6]

Tutaj rozproszyliśmy elementy obu tablic, tworząc nową tablicę combinedNumbers.

Kopiowanie Tablicy z Operatorem Spread

Jeśli chcesz stworzyć shallow copy (płytką kopię) tablicy, możesz użyć operatora spread:

javascript
const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];

Teraz copiedArray jest nową tablicą, która zawiera te same elementy co originalArray, ale jest niezależna od niej.

Operator Spread z Obiektami

Operator spread działa również z obiektami (od ES2018). Możesz go użyć do kopiowania lub łączenia obiektów.

Przykład Kopiowania Obiektu

javascript
const originalObject = { a: 1, b: 2 };
const copiedObject = { ...originalObject };

Rozproszyliśmy właściwości originalObject do nowego obiektu copiedObject.

Łączenie Obiektów

javascript
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const combinedObject = { ...obj1, ...obj2 };
console.log(combinedObject); // { a: 1, b: 2 }

Co to jest Operator Rest w JavaScript?

Operator rest (...) pozwala na zbieranie wielu argumentów w pojedynczy parametr funkcji.

Jest to szczególnie przydatne przy pisaniu funkcji, które przyjmują nieokreśloną liczbę argumentów.

Rest Parameter w Funkcjach

javascript
function sum(...numbers) {
  return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3)); // 6
console.log(sum(4, 5, 6, 7)); // 22

Tutaj parametr ...numbers zbiera wszystkie przekazane argumenty do tablicy numbers.

Rest i Spread Operator w Praktyce

Przekazywanie Argumentów do Funkcji

Załóżmy, że masz funkcję, która oczekuje trzech argumentów:

javascript
function introduce(a, b, c) {
  console.log(`Cześć, jestem ${a}, ${b} i ${c}.`);
}

Masz tablicę z trzema imionami:

javascript
const names = ["Ania", "Bartek", "Cezary"];

Możesz rozproszyć tę tablicę jako argumenty funkcji:

javascript
introduce(...names);
// Cześć, jestem Ania, Bartek i Cezary.

Łączenie Rest i Spread

Możesz też użyć operatora rest w połączeniu z innymi parametrami:

javascript
function greet(greeting, ...names) {
  names.forEach((name) => {
    console.log(`${greeting}, ${name}!`);
  });
}

greet("Cześć", "Ania", "Bartek", "Cezary");
// Cześć, Ania!
// Cześć, Bartek!
// Cześć, Cezary!

Operatory Rest i Spread w Pracy z Tablicami i Obiektami

Dodawanie Elementów do Tablicy

Chcesz dodać element na początku tablicy:

javascript
const originalArray = [2, 3, 4];
const newArray = [1, ...originalArray];
console.log(newArray); // [1, 2, 3, 4]

Aktualizowanie Właściwości Obiektu

Masz obiekt użytkownika i chcesz zaktualizować jego name:

javascript
const user = { name: "Jan", age: 30 };
const updatedUser = { ...user, name: "Piotr" };
console.log(updatedUser); // { name: 'Piotr', age: 30 }

Użycie Spread z Stringami

Operator spread może być również używany ze stringami:

javascript
const str = "hello";
const chars = [...str];
console.log(chars); // ['h', 'e', 'l', 'l', 'o']

Rest Parameter z Destrukturyzacją

javascript
const [first, ...restOfNumbers] = [10, 20, 30, 40];
console.log(first); // 10
console.log(restOfNumbers); // [20, 30, 40]

Praktyczne Zastosowania

Tworzenie Kopii Obiektów i Tablic

Operator spread jest przydatny do tworzenia kopii, co zapobiega modyfikacji oryginalnego obiektu lub tablicy.

Przekazywanie Nieskończonej Liczby Argumentów

Dzięki operatorowi rest, możesz pisać funkcje, które obsługują dowolną liczbę argumentów, co jest przydatne w wielu sytuacjach.

Podsumowanie

Operatory rest i spread pozwalają rozproszyć treści obiektów i tablic, a także przechwytywać wiele argumentów w pojedynczy parametr funkcji.

  • Operator spread (...): Rozprasza elementy tablicy lub właściwości obiektu.
  • Operator rest (...): Zbiera wiele argumentów w pojedynczy parametr.

Mam nadzieję, że ten artykuł pomógł Ci poznać i zrozumieć operatory rest i spread w JavaScript.

Powodzenia i do zobaczenia w kolejnym artykule!

authorImg

Witek Pruchnicki

Z pasją dzielę się wiedzą o programowaniu i nie tylko na różne sposoby