JavaScript метод Object.entries()
JavaScript ObjectОпределение и применение
JavaScript метод entries() позволяет возвратить массив, содержащий собственные перечислимые свойства и методы заданного объекта, включая их значения, при этом по каждому свойству или методу с его значением создается отдельный массив в следующем формате (первым элементом массива будет ключ, а вторым значение):
// возвращаемое значение объекта, содержащего одно перечислимое свойство или метод [ ["ключ", значение] ] // возвращаемое значение объекта, содержащего несколько перечислимых свойств или методов [ ["ключ", значение], ...["ключ", значение] ]
Если в качестве параметра метода передается объект, который не содержит ключей, например, массив или строка, то возвращаемое значение ключа будет соответствовать индексу элемента этого массива или строки:
[ ["индекс", значение], ...["индекс", значение] ]
Обращаю Ваше внимание, что метод .entries() игнорирует свойства, ключом которых является символ (Symbol).
Под перечислимыми свойствами стоит понимать те, атрибут enumerable которых имеет значение true, вследствие чего они будут перечислимы в циклах, например в цикле for...in. Атрибуты в свою очередь описываются дескрипторами свойств – это обычные объекты JavaScript, которые описывают атрибуты и значение свойства. Подробную информацию о дескрипторах свойств и атрибутах вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
entries() | 54.0 | 47.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 ); // TypeErrorJavaScript Object