JavaScript
  • 🧑‍💻Full-Stack Web Developer
  • 📚Теорія
    • 1️⃣Змінні і типи
      • Знайомство з JavaScript
      • Інструменти розробника
      • Підключення скрипту
      • Основи синтаксису
      • Змінні і типи
      • Взаємодія з користувачем
      • Основні оператори
      • Числа
      • Рядки
      • Логічні операції
    • 2️⃣Розгалудження і цикли
      • Розгалуження
      • Тернарний оператор
      • Інструкція switch
      • Область видимості
      • Цикли
    • 3️⃣Масиви
      • Масиви
      • Ітерація по масиву
      • Присвоєння за посиланням і значенням
      • Методи масиву
    • 4️⃣Функції
      • Функції
      • Стек викликів
    • 5️⃣Обʼєкти
      • Обʼєкти
      • Перебирання обʼєкта
      • Масив обʼєктів
      • Операції spread і rest
      • Деструктуризація обʼєктів
      • Деструктуризація масивів
      • Паттерн "обʼєкт параметрів"
    • 6️⃣Колбек-функції, стрілкові функції, перебір масиву
      • Колбек-функції
      • Метод forEach
      • Стрілкові функції
      • Підходи до написання коду
      • Чисті функції
    • 7️⃣Перебираючі методи масивів
      • Перебираючі методи масиву
      • Метод map()
      • Метод flatMap()
      • Метод filter()
      • Метод find()
      • Метод findIndex()
      • Методи every() і some()
      • Метод reduce()
      • Метод sort()
      • Ланцюжки методів
    • 8️⃣Контекст, прототипи та класи
      • Контекст виконання функції
      • Правила визначення this
      • Методи функцій
      • Об'єктно-орієнтоване програмування
      • Прототипне наслідування
    • Класи
  • 👷Практика
    • 👷Практика
    • Page 1
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • Значення за замовчуванням​
  • Зміна імені змінної при деструктуризації
  • Деструктуризація в циклах
  • Глибока деструктуризація
  • Деструктуризація в параметрах функцій
  1. Теорія
  2. Обʼєкти

Деструктуризація обʼєктів

Деструктуризація об'єктів дозволяє розпаковувати значення властивостей об'єктів в окремі змінні. Це корисний і зручний спосіб отримати доступ до властивостей об'єкта. Зазвичай дані приходять у вигляді згрупованих структур (обʼєкти і масиви) відтак доводиться використовувати синтаксис через крапку для доступу до властивостей.

const user = {
  name: "Олександр",
  surname: "Хомяк",
  age: 30,
  city: "Київ",
  hobby: ["electronics", "programming", "sport", "gym"],
  isMarried: false,
};

console.log(user.name); // "Олександр"
console.log(user.age); // 30
console.log(user.hobby); // ["electronics", "programming", "sport", "gym"]

Деструктуризація скорочує код, "витягаючи" властивості в окремі локальні змінні.

const user = {
  name: "Олександр",
  surname: "Хомяк",
  age: 30,
  city: "Київ",
  hobby: ["electronics", "programming", "sport", "gym"],
  isMarried: false,
};

// Деструктуризація об'єкта
const { name, surname, age, city, hobby, isMarried } = user;

console.log(name); // "Олександр"
console.log(age); // 30
console.log(hobby); // ["electronics", "programming", "sport", "gym"]

Деструктуризація завжди розташована у лівій частині операції присвоєння у фігурних дужках після ключового слова const або let. Назви деструктуризованих змінних мають чітко збігатися із властивостями обʼєкта, інакше це буде нова змінна із значенням undefined. Справа від операції присвоєння вказують обʼєкт, який потрібно деструктуризувати. Порядок оголошення змінних у фігурних дужках - неважливий.

При деструктуризації змінній можна задати значення за замовчанням. Тоді, якщо в обʼєкті такої властивості немає, то у змінної буде не значення undefined, а значення задане за замовчанням. Якщо ж така властивість є, то буде присвоєно значення з обʼєкта. Значення за замовчанням задається після символу присвоєння.

const user = {
  name: "Олександр",
  surname: "Хомяк",
};

const { name, surname, avatar = "http://link_to_avatar" } = user;

console.log(avatar); // "http://link_to_avatar"

Зміна імені змінної при деструктуризації

При деструктуризації можна змінити ім'я змінної. Для цього спочатку вказують назву властивості в об'єкті, потім ставлять двокрапку, а потім нове ім'я змінної в яку будемо проводити деструктуризацію властивості.

const user = {
  name: "Олександр",
  surname: "Хомяк",
};

const { name, surname: lastName } = user;

console.log(lastName); // "Хомяк"

Деструктуризація в циклах

Перебираючи масив об'єктів циклом for...of, можна проводити деструктуризацію всередині циклу. Буде проводитися деструктуризація на кожній ітерації.

const users = [
  { name: "Олександр", surname: "Хомяк" },
  { name: "Тарас", surname: "Шевченко" },
  { name: "Леся", surname: "Українка" },
];

for (const user of users) {
  const { name, surname } = user;
  console.log(name);
  console.log(surname);
}

Можна проводити деструктуризацію і беспосередньо у місці оголошення змінної обʼєкту. Але такий код може бути складно читабельний. Тому використовують, коли потрібно деструктуризувати мало змінних.

const users = [
  { name: "Олександр", surname: "Хомяк" },
  { name: "Тарас", surname: "Шевченко" },
  { name: "Леся", surname: "Українка" },
];

for (const { name, surname } of users) {
  console.log(name);
  console.log(surname);
}

Глибока деструктуризація

Глибока деструктуризація об'єктів дозволяє розпаковувати вкладені властивості об'єктів у відповідні змінні. Це корисно, коли об'єкт має вкладену структуру і потрібен доступ до властивостей вкладених об'єктів. Використовуються вищезгадані принципи.

const user = {
  name: "Олександр",
  surname: "Хомяк",
  age: 30,
  address: {
    country: "Ukraine",
    // city: "Київ",
    zip: 11000,
  },
};

const {
  name,
  surname,
  age,
  address: { country, city: place = "Maidan", zip },
} = user;

console.log(country); //Ukraine
console.log(place); //Maidan

Деструктуризація в параметрах функцій

Деструктуризацію об'єктів також можна використовувати при роботі з параметрами функцій.

const user = {
  name: "Олександр",
  surname: "Хомяк",
};

function myFunc({ name, surname }) {
  console.log(`${name} ${surname}`);
}

myFunc(user); // Олександр Хомяк

PreviousОперації spread і restNextДеструктуризація масивів

Last updated 1 year ago

Значення за замовчуванням

📚
5️⃣
​