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 |