Распаковка объекта

Для сохранения значений свойств в переменных можно использовать следующий формат:

{<Свойство 1>[: <Имя>][ = <Значение>][, ..., <Свойство N>]} = <Объект>

Пример:

let car = {
   model: 'ВАЗ-2109',
   year: 2007,
   color: 'red'
};
let model1 = car.model;
console.log(model1);     // ВАЗ-2109
let {model, year, color} = car;
console.log(model);      // ВАЗ-2109
console.log(year);       // 2007
console.log(color);      // red

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

let {model: m, year: y} = car;
console.log(`${m}; ${y}`); // ВАЗ-2109; 2007

Кроме того, после оператора = можно указать значение по умолчанию, если свойства не существует или оно имеет значение undefined:

let obj = { a: 1, b: 2, c: undefined };
let {a, b: b2, c: c2 = 10, d = 20} = obj;
console.log(`${a}; ${b2}; ${c2}; ${d}`);      // 1; 2; 10; 20

Если перед последней переменной в списке указать три точки, то в этой переменной сохранятся оставшиеся свойства, не заданные в списке:

let obj = { a: 1, b: 2, c: 3 };
let {a, ...obj2} = obj;
console.log(a);    // 1
console.log(obj2); // { b: 2, c: 3 }

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

let obj = { a: 1, b: 2, c: 3 };
let key = 'a';
let { [key]: a2 } = obj;
console.log( a2 );       // 1
console.log( obj[key] ); // 1

Пример распаковки вложенного объекта:

let obj = { a: { b: 2, c: undefined } };
let {a: obj2} = obj;
console.log(obj2); // { b: 2, c: undefined }
let {a: { b = 1, c: n = 88 } } = obj;
console.log(b);    // 2
console.log(n);    // 88

Операцию распаковки допускается использовать и в параметрах функции:

function test( {a, c: n = 88} ) {
   console.log(a);    // 1
   console.log(n);    // 88
}
let obj = { a: 1, b: 2, c: undefined };
test(obj);

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов