JavaScript метод Object.entries()

Определение и применение

JavaScript метод entries() позволяет возвратить массив, содержащий собственные перечислимые свойства и методы заданного объекта, включая их значения, при этом по каждому свойству или методу с его значением создается отдельный массив в следующем формате (первым элементом массива будет ключ, а вторым значение):

JavaScript
// возвращаемое значение объекта, содержащего одно перечислимое свойство или метод
[ ["ключ", значение] ]

// возвращаемое значение объекта, содержащего несколько перечислимых свойств или методов
[ ["ключ", значение], ...["ключ", значение] ]

У массива и строковой обёртки есть собственные индексные свойства. Их ключи возвращаются в виде строк:

JavaScript
[ ["индекс", значение], ...["индекс", значение] ]

Под перечислимыми свойствами стоит понимать те, атрибут enumerable которых имеет значение true, вследствие чего они будут перечислимы в циклах, например в цикле for...in. Атрибуты в свою очередь описываются дескрипторами свойств – это обычные объекты JavaScript, которые описывают атрибуты и значение свойства. Подробную информацию о дескрипторах свойств и атрибутах вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.

null и undefined вызывают TypeError; другие примитивы преобразуются в объекты-обёртки. Строка имеет собственные перечислимые индексные свойства.

Учитываются только собственные перечислимые свойства со строковыми ключами; символьные ключи пропускаются.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2017 года.

Показать браузеры
Совместимостьjavascript.builtins.Object.entries
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
entries✓54✓14✓47✓41✓10.1✓54✓47✓41✓10.3✓6.0✓54✓10.3

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Object.entries( obj );

Спецификация

ECMAScript: Object.entries()

Значения параметров

Object: справочные сведения
Параметр Описание
obj Объект, перечислимые собственные свойства и их значения которого должны быть возвращены. Обязательное значение.

Исключения

Object: справочные сведения
Тип исключения Описание
TypeError Возникает в том случае, если методу в качестве значения параметра передается undefined или null (не удается преобразовать значение undefined или null в объект).

Примеры, попробуйте сами

В примере «Пары ключей и значений» показан результат вызова метода.

Пары ключей и значений

Измените свойства исходного объекта и сравните результат до и после вызова метода.

index.html
HTML
<!doctype html>
<html lang="ru">
  <head>
    <meta charset="UTF-8" />
    <title>Пары ключей и значений</title>
  </head>
  <body>
    <p>Результат выполнения выводится в консоль.</p>
  </body>
</html>
main.js
JavaScript
var obj = { a: 1, b: 2, c: 3 }
var newArr = Object.entries(obj)
console.log(newArr) // переменная содержит значение [ ["a", 1], ["b", 2], ["c", 3] ]

// изменяем в объекте существующее свойство
Object.defineProperty(obj, 'c', {
    enumerable: false, // устанавливаем, что свойство не перечислимо
})

console.log(Object.entries(obj)) // переменная содержит значение [ ["a", 1], ["b", 2] ]

var obj = { a: 1, b: 2, c: () => console.log('hello') }
var newArr = Object.entries(obj)
console.log(newArr) // переменная содержит значение [ ["a", 1], ["b", 2], ["c", () => console.log( "hello" )] ] — функция в выводе примера показана как null
newArr[2][1]() // выведет значение hello в консоль

var str = 'What'
var newArr = Object.entries(str)
console.log(newArr) // переменная содержит значение [ ["0", "W"], ["1", "h"], ["2", "a"], ["3", "t"] ]

var arr = ['a', 'b', 'c']
var newArr = Object.entries(arr)
console.log(newArr) // переменная содержит значение [ ["0", "a"], ["1", "b"], ["2", "c"] ]

var objWithSymbol = { [Symbol('test')]: 'test', a: 'test' }
var newArr = Object.entries(objWithSymbol) // игнорирует свойства, ключом которых является символ
console.log(newArr) // переменная содержит значение [ ["a", "test"] ]

try {
    Object.entries(undefined)
} catch (error) {
    console.log(error.name)
}
try {
    Object.entries(null)
} catch (error) {
    console.log(error.name)
}