Деструктуризация объектов в Javascript
Деструктуризация объектов — это удобный способ извлечения данных из объектов в JavaScript. Она позволяет “разбирать” объект на отдельные переменные, что делает код более читаемым и компактным.
Объекты в Javascript - это так называемые ассоциативные
массивы, они схожи с объектами в других языках,
например таких как PHP
Небольшой пример для эксперементов с объектами
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
console.log(obj.name); // 'Elle'
Удалить свойство из объекта можно с помощью метода delete
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
delete obj.age;
console.log(obj); // вернет объект без свойства age
Метод перебора объектов for in()
Воспользуемся тем же объектом из примера
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
for(let key in obj) {
console.log(`Свойство ${key} имеет значение ${obj[key]}`)
}
// Выведет
Свойство name имеет значение Elle
Свойство age имеет значение 22
Свойство hobbies имеет значение [object Object]
Обратим внимание на свойство hobbies
Дело в том что в этом примере весь вывод имеет
строчный тип данных, и когда интерпритатор
натыкается на вложенный объект он не может
превратить его в строку и поэтому в консоль
выводится структура [object Object]
Чтобы достучаться до свойств внутри объекта
используем метод перебора for in
внутри перебора for in
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
//пропишем условие if
//если внутри объекта будет объект
//то запустим еще один перебор
for(let key in obj) {
if(typeof(obj[key]) === 'object') {
for(let i in obj[key]) {
console.log(`Свойство ${i} имеет значение ${obj[key][i]}`)
}
} else {
console.log(`Свойство ${key} имеет значение ${obj[key]}`)
}
}
Нужно знать что у объектов нет свойства length() поэтому напрямую узнать точное количество пар ключ значение узнать не получится.
Можно решить это следующим образом
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
for(let key in obj) {
counter++;
}
console.log(counter);
Метод объекта Object.keys()
Метод Object.keys()
в JavaScript возвращает массив строк, содержащий все собственные (не унаследованные) перечислимые свойства объекта. Этот метод полезен, когда нужно получить список ключей объекта и работать с ними.
Этот метод используется когда нужно работать с ключами объекта как с массивом
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
console.log(Object,keys(obj).length);
Краткий итог лекции:
Объекты это структуры которые могут сохранять внутри себя абсолютно любые типы данных в формате ключ и значение
Ключи и значения могут быть вложенными друг в друга, например объекты внутри объекта, массивы внутри объекта и так далее
Для перебора объектов можно использовать метод
for in
и получать доступ к ключам и значениям ключей
Обращаться к данным внутри объекта можно как через точку так и через квадратные скобки
У объектов бывают как встроенные методы и свойства так и методы. Так же прописывая функции внутри объекта создаются методы объекта.
Деструктуризация объекта
Приступим к деструктуризации объекта.
let obj = {
name: 'Elle',
age: 22,
hobbies: {
film: 'Crank',
music: 'DVRST',
}
};
const {film, music} = obj.hobbies;
console.log(film); //выведет Crank
Деструктуризация объектов позволяет извлекать свойства в отдельные переменные.
Можно переименовывать переменные, задавать значения по умолчанию и работать с вложенными объектами.
Деструктуризация часто используется в параметрах функций и для работы с оставшимися свойствами.
Этот подход делает код более лаконичным и удобным для работы с объектами.