Деструктивное присваивание массивов | Array destructuring assignment

Деструктивное присваивание - упрощает извлечение данных из массивов и объектов, при помощи более короткого синтаксиса.

let languages = ['JavaScript', 'PHP', 'Ruby', 'Python'];

// получение данных в ES5
let js = languages[0];
let php = languages[1];
let rb = languages[2];
let py = languages[3];

// получение данных в ES6
let js, php, rb, py;
[js, php, rb, py] = languages;

Слева в скобках (деструктивное выражение) [js, php, rb, py] - помещаем переменные которым хотим присвоить значения элементов массива.

Код можно сильно упростить:

let [js, php, rb, py] = languages;

Имеется возможность игнорировать некоторые значения. Для этого вместо имени переменной оставляется пустое место и ставится запятая.

let [js, php, , py] = languages;

Для последней переменной деструктивного присваивания массива можно использовать синтаксис оставшихся параметров - ти точки ... В этом случае переменная будет преобразована в массив.

let scores = [3, 4, 5];
let [low, ...rest] = scores;
console.log(low,  rest); // 3 Array [ 4, 5 ]

Можно использовать значения по умолчанию

let scores = [3, 4];
let [low, mid, high = 5] = scores;
console.log(low,  mid, high); // 3 4 5

Можно использовать когда элемент является массивом

let scores = [3, 4, [5, 6]];
let [low, mid, high] = scores;
console.log(low,  mid, high); // 3 4 Array [ 5, 6 ]

Можно использовать как параметр функции

function countScore([low, mid]){
	console.log(low, mid);
}
countScore([3, 4]); // 3 4

Можно использовать для возврата нескольких значений из функции

function getScore(){
	return [3, 4, 5];
}
let [low, mid, high] = getScore();
console.log(low, mid, high); // 3 4 5

Можно использовать чтобы быстро обменять значения переменных

let yes = 'Yes';
let no = 'No';
[yes, no] = [no, yes];
console.log('Yes is ', yes); // Yes is  No
console.log('No is ', no); // No is  Yes