Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS об'єкт for...in

Загальний опис

for...in — це спеціальна конструкція JavaScript, яка використовується для ітерації по перелічуваних властивостях об'єкта. Цей цикл дозволяє отримати ключі (імена властивостей) об'єкта, які потім можна використовувати для доступу до їхніх значень.

При використанні for...in цикл перебирає всі ключі, які є власними або успадкованими властивостями об'єкта. Властивості, які є неперелічуваними (наприклад, зі встановленим enumerable: false), не будуть включені в ітерацію.

Простий приклад:

const user = {
  name: "Іван",
  age: 25,
  city: "Київ"
};

for (let key in user) {
  console.log(`${key}: ${user[key]}`);
}
// Виведе:
// name: Іван
// age: 25
// city: Київ

Цикл працює не тільки з власними властивостями об'єкта, але й з успадкованими. Це означає, що властивості з прототипу також будуть перебрані. Щоб обмежити цикл тільки власними властивостями, можна використовувати метод hasOwnProperty:

for (let key in user) {
  if (user.hasOwnProperty(key)) {
    console.log(`${key}: ${user[key]}`);
  }
}

for...in часто використовується для роботи зі звичайними об'єктами, але його не варто застосовувати для ітерації масивів, оскільки він перебирає індекси у вигляді рядків, що може призводити до несподіваних результатів. Для масивів краще підходить for або for...of.

Цей цикл зручний, коли потрібно обробляти динамічний набір властивостей, наприклад, з API або налаштувань користувача.

Порада:

Не використовуйте for...in для ітерації масивів, оскільки цикл повертає індекси у вигляді рядків. Це може викликати проблеми при використанні методів масиву. Наприклад, методи Array.prototype також можуть бути перелічуваними, що зробить ітерацію непередбачуваною.

Порада:

Коли ітеруєте об'єкт, що може мати властивості з прототипу, завжди перевіряйте hasOwnProperty. Це гарантує, що ви обробляєте лише власні властивості об'єкта, а не успадковані.

Порада:

Для перевірки, чи властивість є перелічуваною, можна скористатися методом propertyIsEnumerable. Це корисно, якщо вам потрібно ігнорувати властивості, які встановлені з enumerable: false.

Синтаксис

for (let key in object) {
  // Дії з object[key]
}

Переглядачі

Переглядач

1

1

1

2

12

Переглядач

4.4

18

4

1

Переглядач

0.10.0

1.0

Приклади


Цей код дозволяє редагувати властивості об'єкта через форму. Користувач може змінити будь-яке значення, натиснути "Оновити об'єкт", і всі зміни миттєво відобразяться у вікні результату. Це чудовий приклад для демонстрації роботи з for...in та інтерактивності.

Цей приклад показує, як об'єднати кілька об'єктів, використовуючи for...in. Властивості з об'єкта obj2 перекривають властивості obj1.

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const result = {};

for (let key in obj1) {
  result[key] = obj1[key];
}
for (let key in obj2) {
  result[key] = obj2[key];
}

console.log(result); // { a: 1, b: 3, c: 4 }

У цьому прикладі ключі та значення об'єкта міняються місцями. Це корисно для випадків, коли потрібно зробити зворотне мапування значень до ключів.

const user = { name: "Іван", age: 25, city: "Київ" };
const swapped = {};

for (let key in user) {
  swapped[user[key]] = key;
}

console.log(swapped);
// { Іван: "name", 25: "age", Київ: "city" }

Методи

Властивості