Деструктуризация объектов в JavaScript

Кроме массивов можно также делать и деструктуризацию объектов. Пусть, к примеру, у нас есть следующий объект:

let obj = { year: 2025, month: 12, day: 31, };

Давайте выполним его деструктуризацию:

let obj = { year: 2025, month: 12, day: 31, }; let {year, month, day} = obj; console.log(year); // выведет 2025 console.log(month); // выведет 12 console.log(day); // выведет 31

При деструктуризации объектов имена переменных должны совпадать в ключами объекта, порядок переменных и элементов в объекте не имеет значения

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

let options = { color: 'red', width: 400, height: 500, }; let color = options.color; let width = options.width; let height = options.height;

Переделайте этот код через деструктуризацию согласно изученной теории.

Другие имена переменных

Можно сделать так, чтобы имена переменных не совпадали с именами ключей объекта:

let obj = { year: 2025, month: 12, day: 31, }; let {year: y, month: m, day: d} = obj; console.log(y); // выведет 2025 console.log(m); // выведет 12 console.log(d); // выведет 31

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

let options = { color: 'red', width: 400, height: 500, }; let c = options.color; let w = options.width; let h = options.height;

Переделайте этот код через деструктуризацию согласно изученной теории.

Значения по умолчанию

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

let obj = { month: 12, day: 31, }; let {year = 2025, month, day} = obj; console.log(year); // выведет 2025 console.log(month); // выведет 1 console.log(day); // выведет 31

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

let options = { width: 400, height: 500, }; let color; if (options.color !== undefined) { color = options.color; } else { color = 'black'; } let width = options.width; let height = options.height;

Переделайте этот код через деструктуризацию согласно изученной теории.

Другие переменные и значения по умолчанию

Можно также менять названия переменных на свои при этом задавая значения по умолчанию:

let obj = { month: 12, day: 31, }; let {year:y = 2025, month, day} = obj; console.log(y); // выведет 2025 console.log(month); // выведет 1 console.log(day); // выведет 31

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

let options = { width: 400, height: 500, }; let с; if (options.с !== undefined) { с = options.color; } else { с = 'black'; } let w = options.width; let h = options.height;

Переделайте этот код через деструктуризацию согласно изученной теории.

Функции в качестве значения по умолчанию

В качестве значений по умолчанию может выступать результат выполнения функции:

function func() { return (new Date).getFullYear(); } let obj = { month: 12, day: 31, }; let {year = func(), month, day} = obj;

Объект из функции

Объект для деструктуризации не обязательно должен хранится в переменной. Он также может быть результатом работы функции:

function func() { return obj = { year: 2025, month: 12, day: 31, }; } let {year, month, day} = func();

Объявление переменных

Не обязательно объявлять переменные при деструктуризации. Они могут быть объявлены заранее:

let obj = { year: 2025, month: 12, day: 31, }; let year, month, day; // объявим переменные заранее

Тут, однако, в отличии от массивов, есть нюансы. Без команды let перед фигурными скобками эти фигурные скобки не будут восприняты JavaScript как команда на деструктуризацию (а будут восприняты как блок кода):

{year, month, day} = obj; // не будет работать

Для решения проблемы команду на деструктуризацию объекта нужно брать в круглые скобки:

({year, month, day} = obj);