Синтаксис распространения — одна из самых захватывающих функций в JavaScript ES6. В этой статье мы собираемся изучить несколько часто используемых сценариев синтаксиса распространения.

Расширить вставленный массив

Вот список членов команды разработчиков:

var members = ['Amy', 'Denise', 'Kate'];

Теперь к нам присоединились новые участники:

var newMembers = ['Bella', 'Dave'];

Чтобы добавить новых участников в команду, мы просто складываем два массива вместе:

var members = ['Amy', 'Denise', 'Kate'];
var newMembers = ['Bella', 'Dave'];
var team = [members, newMembers];

Давайте проверим вывод в панели консоли:

Вместо вставки новых элементов в исходный массив старые элементы и новые элементы были разделены на два массива. Босс, вероятно, не будет рад видеть, что команда так разделена; поэтому нам нужно что-то сделать, чтобы объединить всех участников в команду. Для достижения этой цели синтаксис распространения может оказать нам большую помощь:

var members = ['Amy', 'Denise', 'Kate'];
var newMembers = ['Bella', 'Dave'];
var team = [...members, ...newMembers];

Теперь все члены одной большой семьи!

Копировать массив

Далее мы представляем еще одно полезное использование синтаксиса распространения — копирование массива.

Здесь у нас есть промежуточные результаты Эми по трем предметам:

var midterm = [{math: 80, history: 60, chemistry: 90 }];

Теперь учитель попытался записать итоговые результаты экзамена Эми, скопировав ее промежуточные результаты, а затем изменив оценки:

var final = midterm;
final.math = 50;
final.history = 70;
final.chemistry = 20;

Результаты финала теперь показывают обновленные оценки. Однако учитель обнаружил, что промежуточные результаты были переопределены окончательными результатами, когда он хотел сравнить ее промежуточные и итоговые оценки, чтобы увидеть, добилась ли она прогресса.

Причина этого в том, что массив final был присвоен той же ссылке, что и массив midterm, вместо создания другой копии массива. Чтобы избежать переопределения исходных оценок, мы можем использовать синтаксис распространения следующим образом:

var final = [...midterm];
final.math = 50;
final.history = 70;
final.chemistry = 20;

Теперь у нас правильно записаны как промежуточные, так и окончательные результаты Эми!

Использование математических методов

JavaScript предоставляет нам несколько методов для выполнения математических вычислений. Например, вот у нас есть массив и мы пытаемся найти в нем наибольшее значение. Раньше для этого можно было использовать apply:

var numbers = [2, 5, 6, 8, 11, 15];
function getMax(arr){
   return Math.max.apply(null, arr);
}
console.log(getMax(numbers));

После выпуска ES6 теперь мы можем реализовать это более элегантным способом, используя синтаксис распространения:

var numbers = [2, 5, 6, 8, 11, 15];
var max = Math.max(...numbers);
console.log(max);

Синтаксис распространения сделал нашу жизнь проще, не так ли!