Деструктуризация
1. Деструктуризация объектов
При разработке программ данные приходят, как правило, в виде массивов и объектов. А логика обработки данных написана с помощью локальных переменных. Поэтому необходимо присваивать значения свойств объектов переменным и делать это желательно максимально просто.
Для этого в ES6 введен новый синтаксис — переменным внутри фигурных скобок присваиваются значения объекта. Если имя переменной и ключ объекта совпадают, то происходит присваивание. Если для переменной не нашлось подходящего ключа, то будет присвоен undefined
.
Присвоения undefined
можно избежать, задав переменным значения по умолчанию, в случае если такого свойства в объекте нет.
Не всегда удобно создавать имена переменных по ключам, поэтому можно переопределить имена в процессе присвоения. Сначала пишем имя свойства из которого мы хотим получить значение, после чего ставим двоеточие и пишем имя переменной, в которую хотим поместить значение этого свойства.
Используя операцию ...
(rest) можно делать частичную деструктуризацию, взяв из объекта необходимые поля, а остальное собрать в переменную под именем rest
(имя переменной произвольное), это будет объект с теми полями, которые мы явно не деструктуризировали в переменные.
2. Деструктуризация массивов
Аналогично делается деструктуризация массивов, но с некоторыми особенностями:
Вместо
{}
используются[]
Переменным, указанным в
[]
, будут последовательно присваиваться значения элементов массива
Представьте, что есть массив цветов из которого нужно в отдельные переменные получить значения каждой составляющей цвета. После ключевого слова const
или let
ставим открывающую и закрывающую квадратные скобки, как при объявлении массива. Внутри скобок, через запятую, указываем имена переменных, в которые будут помещены значения массива.
В результате такой записи будут созданы 3 переменные и в них будут помещены элементы в нумерованном порядке - от 0 и до конца массива.
При деструктуризации массивов переменной может быть присвоено значение отдельно от ее объявления.
Если переменных больше, чем элементов массива, им будет присвоено undefined
, поэтому можно указывать значения по умолчанию.
Иногда из массива необходимо деструктуризировать только первые n
элементов, а остальные сохранить в одну переменную в виде массива. При деструкции массива можно распаковать и присвоить оставшуюся часть элементов массива переменной, используя операцию ...
(rest).
Элементы можно пропускать. Допустим, из массива rgb
необходимо взять только последнее значение. Используется это крайне редко.
3. Дополнительные материалы
Last updated