Object.keys()
Статичний метод Object.keys()
(ключі) повертає масив, що складається з імен власних перелічуваних властивостей переданого об'єкта, що мають рядкові ключі.
Спробуйте його в дії
Синтаксис
Object.keys(obj)
Параметри
obj
(об'єкт)Об'єкт.
Повернене значення
Масив рядків, що позначають ключі власних перелічуваних властивостей даного об'єкта, що мають рядкові ключі.
Опис
Object.keys()
повертає масив, чиї елементи — рядки, які відповідають перелічуваним властивостям, що знаходяться безпосередньо на об'єкті object
. Порядок обробки такий само, як в циклі for...in
, окрім того, що цикл for...in
перелічує також властивості із ланцюжка прототипів. Порядок масиву, поверненого Object.keys()
, такий само, як порядок обробки в циклі for...in
.
Коли потрібні значення властивостей, слід натомість використовувати Object.values()
. Коли потрібні і ключі, і значення властивостей, слід натомість використовувати Object.entries()
.
Приклади
Застосування Object.keys()
// Базовий масив
const arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // ['0', '1', '2']
// масивоподібний об'єкт
const obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // ['0', '1', '2']
// масивоподібний об'єкт з випадковим порядком ключів
const anObj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(anObj)); // ['2', '7', '100']
// getFoo — це неперелічувана властивість
const myObj = Object.create(
{},
{
getFoo: {
value() {
return this.foo;
},
},
},
);
myObj.foo = 1;
console.log(Object.keys(myObj)); // ['foo']
Якщо потрібні всі властивості, включно з неперелічуваними, — зверніть увагу на Object.getOwnPropertyNames()
.
Застосування Object.keys() на примітивах
Необ'єктні аргументи зводяться до об'єктів. Значення undefined
і null
не можуть бути зведення до об'єкта та зразу викидають TypeError
. Лише рядки можуть мати власні перелічувані властивості, коли решта примітивів повертають порожній масив.
// Рядки мають власні перелічувані властивості у вигляді індексів
console.log(Object.keys("foo")); // ['0', '1', '2']
// Решта примітивів, крім undefined і null, не має власних властивостей
console.log(Object.keys(100)); // []
[!NOTE] В середовищі ES5 передача необ'єкта в
Object.keys()
призводить до викиданняTypeError
.
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
keys
|
Chrome Full support 5 | Edge Full support 12 | Firefox Full support 4 | Internet Explorer Full support 9 | Opera Full support 12 | Safari Full support 5 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 12 | Safari on iOS Full support 5 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |