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 або налаштувань користувача.

автор: Bond

Порада

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

автор: Bond
Порада

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

автор: Bond
Порада

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

автор: Bond

Синтаксис

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

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 2 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад показує, як об'єднати кілька об'єктів, використовуючи 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 }
автор: Bond

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

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

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

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

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

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід