JavaScript метод Object.entries()ECMAScript 2017

JavaScript Object

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

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

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

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

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

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

Обращаю Ваше внимание, что метод .entries()ECMAScript 2017 игнорирует свойства, ключом которых является символ (Symbol).


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

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

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
entries()ECMAScript 201754.047.0Нет10.1НетДа

JavaScript синтаксис:

Object.entries( obj );

Версия JavaScript

ECMAScript 2017 (8th Edition, ECMA-262)

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

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

Исключения

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

Пример использования

let obj = {a: 1, b: 2, c: 3};
let 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] ]

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

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

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

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

Object.entries( undefined ); // TypeError 
Object.entries( null ); // TypeError
JavaScript Object