Spread та Rest оператори

Spread (...) та Rest (...) оператори є потужними інструментами в JavaScript, які допомагають маніпулювати масивами та об’єктами. У цьому уроці ми розглянемо, як використовувати spread та rest оператори та надамо приклади їх застосування.

Spread оператор

Spread оператор дозволяє розгортати (розширювати) елементи масиву або властивості об’єкту.

Використання в масивах

const numbers = [1, 2, 3];
const newNumbers = [...numbers, 4, 5];

console.log(newNumbers); // [1, 2, 3, 4, 5]

Використання в об’єктах

const person = { name: "John", age: 30 };
const newPerson = { ...person, gender: "male" };

console.log(newPerson);
// { name: "John", age: 30, gender: "male" }

Важливо пам’ятати, що ключі в об’єкті мають унікальні імена. Тому якщо ви “розпиляєте” властивості одного об’єкта в інший і обидва об’єкти мають ключі з однаковим іменем то в результаті ви отриаєте те значення яке було вказано останнім.

const person = {name: 'John', age: 30};
const newPerson = {...person, gender: 'female', name: 'Alice'};

console.log(newPerson);
// { name: 'Alice', age: 30, gender: 'male' }
const person = {name: 'John', age: 30};
const newPerson = {
	gender: 'female',
	name: 'Alice',
	...person,
	age: 42
};

console.log(newPerson);
// { gender: 'female', name: 'John', age: 42 }

Rest оператор

Rest оператор дозволяє збирати залишкові аргументи в масив або об’єкт.

Використання в функціях

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

console.log(sum(1, 2, 3, 4)); // 10

Використання в деструктуризації

const [first, second, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]

Використання обох операторів разом

const numbers = [1, 2, 3];
const newNumbers = [...numbers, 4, 5];

function add(...nums) {
  return nums.reduce((total, num) => total + num, 0);
}

console.log(add(...numbers)); // 6

Spread та Rest оператори розроблюють код більш зрозумілим, дозволяють легко об’єднувати або розділяти дані та покращують ефективність роботи з масивами та об’єктами.