Destruktyryzacja (destructuring) i operator spread to dwie techniki, które znacznie ułatwiają pracę z danymi w JavaScript. Ich kombinacja otwiera drzwi do szybkiego i czytelnego przetwarzania danych. W tym artykule dowiesz się, jak je wykorzystać.
Desktrukturyzacja
Desktrukturyzacja to mechanizm w JavaScript, który pozwala na wygodne wyciąganie danych z różnych struktur danych, takich jak obiekty i tablice. Dzięki niej możemy szybko i zwięźle uzyskać dostęp do potrzebnych nam elementów, co znacznie ułatwia pracę z danymi.
Desktrukturyzacja obiektów
const person = { firstName: 'John', lastName: 'Doe', age: 30 }
const { firstName, lastName } = person
console.log(firstName) // Wyświetli: John
console.log(lastName) // Wyświetli: Doe
Desktrukturyzacja tablic
const numbers = [1, 2, 3, 4, 5];
const [first, second, ...rest] = numbers;
console.log(first) // Wyświetli: 1
console.log(second) // Wyświetli: 2
console.log(rest) // Wyświetli: [3, 4, 5]
Spread Operator
Operator spread pozwala na łączenie danych w obiektach i tablicach. Dzięki niemu możemy w prosty sposób łączyć dane z różnych źródeł. Operator ten możemy użyć także jako parametr funkcji.
Spread Operator w obiektach
const person = { firstName: 'John', lastName: 'Doe' }
const additionalInfo = { age: 30, occupation: 'Developer' }
const combinedPerson = { ...person, ...additionalInfo }
console.log(combinedPerson)
// Wyświetli: { firstName: 'John', lastName: 'Doe', age: 30, occupation: 'Developer' }
Spread Operator w tablicach
const numbers = [1, 2, 3]
const additionalNumbers = [4, 5, 6]
const combinedNumbers = [...numbers, ...additionalNumbers]
console.log(combinedNumbers)
// Wyświetli: [1, 2, 3, 4, 5, 6]
Spread Operator jako parametr funkcji
Użycie operatora spread jako parametru funkcji pozwala na przekazanie dowolnej liczby argumentów do funkcji. Jest to
tzw. parametr rest
, który łączy wszystkie przekazane argumenty w tablicę. Funkcja zaprezentowana w poniższym
przykładzie dodaje do siebie wszystkie argumenty, w tym sumuje wszystkie elementy tablicy c
poprzez funkcje reduce
.
function sum(a, b, ...c) {
return a + b + c.reduce((acc, val) => acc + val, 0);
}
sum(1, 2, 3, 4, 5); // Wyświetli: 15
Połączenie desktrukturyzacji i operatora spread
W poniższym przykładzie wykorzystujemy desktrukturyzację i spread operator do wyciągnięcia z obiektu person
pojedynczych wartości firstName
i lastName
oraz pozostałych wartości do obiektu info
.
const person = { firstName: 'John', lastName: 'Doe', age: 30, hobbies: ['reading', 'singing'] }
const { firstName, lastName, ...info } = person
console.log(firstName) // Wyświetli: Alice
console.log(lastName) // Wyświetli: Doe
console.log(info) // Wyświetli: { age: 30 hobbies: ['reading', 'singing'] }