Object.entries()

Статичний метод Object.entries() (записи) повертає власні перелічувані властивості об'єкта, котрі мають рядкові ключі, у вигляді масиву пар ключ-значення.

Спробуйте його в дії

Синтаксис

Object.entries(obj)

Параметри

obj

Об'єкт.

Повернене значення

Масив власних перелічуваних властивостей об'єкта, котрі мають рядкові ключі, у вигляді масиву пар ключ-значення. Кожна пара ключ-значення є масивом з двома елементами: перший елемент – ключ властивості (котрий завжди є рядком), а другий – її значення.

Опис

Object.entries() повертає масив, чиї елементи – масиви, що відповідають перелічуваним властивостям з рядковими ключами, знайденим безпосередньо на object. Алгоритм такий само, як при ітеруванні за допомогою циклу for...in, окрім того, що цикл for...in також обробляє властивості з ланцюжка прототипів. Порядок масиву, поверненого Object.entries(), такий само, як порядок обробки циклом for...in.

Коли потрібні лише ключі властивостей, слід натомість використовувати Object.keys(). Коли потрібні лише їх значення, слід натомість використовувати Object.values().

Приклади

Застосування Object.entries()

const obj = { foo: "bar", baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]

const arrayLike = { 0: "a", 1: "b", 2: "c" };
console.log(Object.entries(arrayLike)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

const randomKeyOrder = { 100: "a", 2: "b", 7: "c" };
console.log(Object.entries(randomKeyOrder)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

// getFoo – неперелічувана властивість
const myObj = Object.create(
  {},
  {
    getFoo: {
      value() {
        return this.foo;
      },
    },
  },
);
myObj.foo = "bar";
console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]

Застосування Object.entries() на примітивах

Необ'єктні аргументи зводяться до об'єктів. Значення undefined і null не можуть бути зведення до об'єкта та зразу викидають TypeError. Лише рядки можуть мати власні перелічувані властивості, тим часом решта примітивів повертає порожній масив.

// Рядки мають перелічувані властивості у вигляді індексів
console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
// Решта примітивів, крім undefined і null, не має власних властивостей
console.log(Object.entries(100)); // []

Перетворення Object на Map

Конструктор Map() приймає ітерований об'єкт entries. За допомогою Object.entries можна легко перетворювати Object на Map:

const obj = { foo: "bar", baz: 42 };
const map = new Map(Object.entries(obj));
console.log(map); // Map(2) {"foo" => "bar", "baz" => 42}

Ітерування по Object

За допомогою деструктурування масиву можна з легкістю перебирати поля об'єкта.

// За допомогою циклу for...of
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {
  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}
// За допомогою методів масиву
Object.entries(obj).forEach(([key, value]) => {
  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});

Специфікації

Сумісність із браузерами

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
entries
Chrome Full support 54
Edge Full support 14
Firefox Full support 47
Internet Explorer No support No
Opera Full support 41
Safari Full support 10.1
WebView Android Full support 54
Chrome Android Full support 54
Firefox for Android Full support 47
Opera Android Full support 41
Safari on iOS Full support 10.3
Samsung Internet Full support 6.0
Deno Full support 1.0
Node.js Full support 7.0.0

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