Цикл for…in перебирает все перечисляемые свойства объекта, включая унаследованные. Он проходит по именам свойств, а не по значениям. Чтобы получить значение, нужно использовать квадратные скобки с именем свойства.
Цикл for…in — это способ пройтись по всем свойствам объекта. Он очень прост в использовании, но имеет особенности, о которых нужно знать.
Цикл проходит по именам всех перечисляемых свойств:
const user = { name: 'Иван', age: 25 };
for (let key in user) {
console.log(key); // Выведет 'name', потом 'age'
console.log(user[key]); // Выведет 'Иван', потом 25
}const obj = { a: 1, b: 2 };
// Переберет a и bconst obj = {};
// Переберет toString, hasOwnProperty и другие унаследованные методыconst user = {
name: 'Иван',
age: 25,
city: 'Москва'
};
for (let prop in user) {
console.log(prop + ': ' + user[prop]);
}
// name: Иван
// age: 25
// city: Москва// Числовые ключи идут первыми по возрастанию
const obj = { 3: 'три', 1: 'один', 2: 'два', a: 'буква' };
// Порядок: 1, 2, 3, aconst obj = { name: 'Иван' };
// obj.toString тоже перебирается!
for (let key in obj) {
console.log(key); // name, toString, hasOwnProperty...
}const obj = { name: 'Иван' };
for (let key in obj) {
// Проверяем, что свойство принадлежит объекту
if (obj.hasOwnProperty(key)) {
console.log(key + ': ' + obj[key]);
}
}const user = { name: 'Иван', age: 25 };
// Лучший способ — перебирать только свои свойства
for (let key in user) {
if (user.hasOwnProperty(key)) {
console.log(key, user[key]);
}
}// ❌ Перебираем лишнее
const obj = { name: 'Иван' };
for (let key in obj) {
console.log(obj[key]); // Выведет и name, и toString, и другие методы
}
// ✅ Только свои свойства
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(obj[key]); // Только name
}
}// ❌ Не рассчитываем на порядок (до ES6)
const obj = { b: 2, a: 1, c: 3 };
// Порядок может быть разным
// ✅ Для порядка используем массивы или MapЦикл for…in удобен для простого перебора свойств, но всегда проверяйте, что свойство принадлежит самому объекту с помощью hasOwnProperty.
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪