dr.Brain

doctor Brain

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

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

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

dr.Brain

время чтения 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 & Backend. Статьи, обзоры, заметки, код, уроки.