I Shar

I Shar

мир глазами веб-разработчика

8 способов применения spread-оператора

учимся использовать spread-оператор в JavaScript

I Shar

время чтения 2 мин.

Photo by Monika Grabkowska on Unsplash

Spread-оператор {...} был представлен в ES6. Он расширяет итерируемый объект в отдельный элемент. К итерируемым объектам относятся все сущности, которые можно перебрать с помощью цикла for. Примеры итерируемых сущностей: array, string, map, set, DOM node.

1. Для вывода лога

Spread-оператор можно использовать в console.log с итерируемым объектом:

let fruits = ['🍈', '🍉', '🍋', '🍌'];
console.log(...fruits); //🍈 🍉 🍋 🍌

2. Для копирования массивов

let fruits = ['🍈', '🍉', '🍋', '🍌'];
let fruitsCopy = [ ...fruits ];
console.log(...fruitsCopy); //🍈 🍉 🍋 🍌

или копирования объектов:

let user = {name : "John", age : 20 }
let userCopy = {...user}

Spread-оператор не осуществляет глубокое копирование.

3. Для объединения

let fruits = ['🍈', '🍉', '🍋', '🍌'];
let vegetables = ['🍅', '🍆', '🥒'];
let fruitsAndVeg = [...fruits, ...vegetables]

в том числе для объединения объектов:

let user1 = {name : "John", age : 20 };
let user2 = {name : "Ram", salary: '20K' };
let userCopy = {...user1, ...user2};
userCopy ; // {name : "Ram", age :20 , salary : '20K'};

При объединении объектов, если ключ уже существует, он будет заменен значением последнего объекта с таким же ключом.

4. Чтобы передавать аргументы

function sum(a, b) {
   return a+b;
}
let num = [1,2];
sum(...num); // 3

Spread-оператор можно использовать с математическими функциями:

let num = [5,9,3,5,7];
Math.min(...num);
Math.max(...num);

5. При деструктуризации переменных

let [melon, ...fruits ] = ['🍉', '🍋', '🍌', '🍊'];
melon; //🍉
fruits; // [ '🍋', '🍌', '🍊']

или деструктуризации объектов:

let user = {name : "Ram", age: 20, salary: '20K', job : "Tester" };
let { name, age, ...details } = user;
name; // Ram
age; // 20
details; // {salary: '20K', job : 'Tester'};

6. Для преобразования объектов NodeList в массивы

Объекты NodeList подобны массивам, но не имеют все методы массивов, такие как: forEach, map, filter и другие.

let nodeList = document.querySelectorAll('.class')
let nodeArray = [...nodeList]

7. Для преобразования строки в символы

Строка является итерируемой сущностью, поэтому ... можно применить и к строке, чтобы получить массив символов:

let name = "Ram";
let chars = [...name];
console.log(chars); // ["R", "a", "m"]

8. Чтобы удалить дубли в массиве

let num = [1, 3, 1, 3, 3, 1];
let uniqueNum = [...new Set(num)];
uniqueNum; //[ 1, 3 ]


Спасибо за внимание.


Перевод статьи “8 ways to use the Spread operator in JavaScript”.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.