PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Как определить когда использовать цикл for...in?

Основы языка

`for...in` используют для перебора ключей объекта (перечисляемых свойств). Не для массивов (даёт индексы-строки, включает прототип, не гарантирует порядок).

Когда использовать for...in

Для перебора ключей объекта:

const user = { name: 'Ann', age: 25 };
for (const key in user) {
  console.log(key, user[key]); // 'name' Ann, 'age' 25
}

Особенности (учитывать)

Перебирает унаследованные свойства

for...in обходит и свойства из прототипа — часто нежелательно:

for (const key in obj) {
  if (obj.hasOwnProperty(key)) { // фильтр собственных свойств
    // ...
  }
}

Не для массивов

Даёт индексы как строки, включает добавленные и унаследованные свойства:

const arr = [10, 20];
for (const i in arr) console.log(i); // '0', '1' — строки, не рекомендуется

Для массивов — for...of или forEach.

Когда НЕ использовать

  • Массивы → for...of/forEach/for.
  • Если важен порядок или нужны только собственные свойства → Object.keys/entries + for...of.

Лучшая альтернатива

for (const [key, value] of Object.entries(obj)) {
  // только собственные свойства, чистый перебор
}

Object.keys/values/entries не включают прототип и удобнее.

Как определить, что нужен for...in

  • Нужны все перечисляемые ключи объекта, включая унаследованные → for...in.
  • Обычно лучше Object.keys/entries (собственные свойства, предсказуемо).

Коротко для собеседования

for...in используют для перебора ключей объекта (перечисляемых свойств). Учитывать: обходит унаследованные свойства (фильтровать hasOwnProperty), не для массивов (индексы-строки, порядок не гарантирован — для них for...of). Обычно лучше Object.keys/entries + for...of (только собственные свойства, предсказуемо).

Другие вопросы раздела