Как получить ключи объекта в JavaScript?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Получение ключей объекта в JavaScript
Есть несколько способов получить ключи объекта.
Object.keys() — основной способ
const user = {
name: 'Иван',
age: 30,
email: 'ivan@example.com'
};
const keys = Object.keys(user);
console.log(keys); // ['name', 'age', 'email']
// Итерирование
keys.forEach(key => {
console.log(`${key}: ${user[key]}`);
});
Object.keys() возвращает массив собственных перечисляемых ключей объекта.
Object.getOwnPropertyNames()
const obj = {};
Object.defineProperty(obj, 'hidden', {
value: 'скрыто',
enumerable: false
});
obj.visible = 'видно';
console.log(Object.keys(obj)); // ['visible']
console.log(Object.getOwnPropertyNames(obj)); // ['hidden', 'visible']
Возвращает ВСЕ собственные свойства, включая неперечисляемые.
for...in цикл
const parent = { parentKey: 'значение' };
const child = Object.create(parent);
child.ownKey = 'собственное значение';
for (let key in child) {
console.log(key); // ownKey, parentKey
}
// Только собственные
for (let key in child) {
if (child.hasOwnProperty(key)) {
console.log(key); // ownKey
}
}
Итерирует по всем перечисляемым свойствам, включая унаследованные.
Reflect.ownKeys()
const sym = Symbol('символ');
const obj = {
name: 'Иван',
[sym]: 'значение символа'
};
Object.defineProperty(obj, 'hidden', {
value: 'скрыто',
enumerable: false
});
console.log(Object.keys(obj)); // ['name']
console.log(Reflect.ownKeys(obj)); // ['name', 'hidden', Symbol(символ)]
Возвращает все ключи, включая символы и неперечисляемые свойства.
Object.entries()
const user = {
name: 'Анна',
city: 'Москва',
age: 28
};
for (const [key, value] of Object.entries(user)) {
console.log(`${key}: ${value}`);
}
Получить ключи и значения одновременно.
Object.getOwnPropertySymbols()
const sym1 = Symbol('sym1');
const sym2 = Symbol('sym2');
const obj = {
name: 'данные',
[sym1]: 'значение 1',
[sym2]: 'значение 2'
};
const symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols); // [Symbol(sym1), Symbol(sym2)]
Получить только символьные ключи объекта.
Сравнение методов
| Метод | Перечисляемые | Неперечисляемые | Унаследованные | Символы |
|---|---|---|---|---|
| Object.keys() | ✅ | ❌ | ❌ | ❌ |
| Object.getOwnPropertyNames() | ✅ | ✅ | ❌ | ❌ |
| for...in | ✅ | ❌ | ✅ | ❌ |
| Reflect.ownKeys() | ✅ | ✅ | ❌ | ✅ |
Рекомендации
✅ Используй Object.keys() в 99% случаев для простых объектов ✅ Используй Object.entries() когда нужны ключи и значения одновременно ✅ Используй for...in для итерирования со своими свойствами ❌ Избегай for...in для массивов (используй for...of или forEach)
Object.keys() — это самый распространенный способ получить ключи объекта.