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
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
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

Дивіться також