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 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
entries
|
Chrome Full support 54 | Edge Full support 14 | Firefox Full support 47 | Internet Explorer No support Ні | 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 |