MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-survey

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Это экспериментальная технология, часть предложения Harmony (ECMAScript 7).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

Object.entries() метод возвращает массив собственных перечисляемых свойств указанного объекта в формате [key, value], в том же порядке, что и в цикле for...in (разница в том, что for-in также перечисляет свойства из цепочки прототипов).

Синтаксис

Object.entries(obj)

Параметры

obj
Объект, чьи перечислимые свойства будут возвращены в виде массива [key, value].

Возвращаемое значение

Массив перечислений собственных свойств объекта с парами [key, value].

 

 

Описание

Object.entries() возвращает массив, элементами которого являются массивы, соответсвующие перечисляемому свойству пары [key, value], найденной прямо в object. Порядок свойств тот же, что и при прохождении циклом по свойствам объекта вручную.

Примеры

var obj = { foo: "bar", baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]

// массив как объект
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

// массив как объект c random сортировкой ключей
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

// getFoo is property which isn't enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = "bar";
console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]

// non-object argument will be coerced to an object
console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]

Преобразование Object в Map

Конструктор new Map() принимает повторение значений. С Object.entries вы легко можете преобразовать Object в Map:

var obj = { foo: "bar", baz: 42 }; 
var map = new Map(Object.entries(obj));
console.log(map); // Map { foo: "bar", baz: 42 }

Полифил

Чтобы добавить поддержку Object.entries в более старых окружениях, которые не поддерживают его нативно, вы можете найти полифил в tc39/proposal-object-values-entries или es-shims/Object.entries репозиториях.

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

Спецификация Статус Комментарии
ECMAScript Latest Draft (ECMA-262)
Определение 'Object.entries' в этой спецификации.
Черновик Not included in the official draft yet. See this stage3 proposal for the current specification draft text.

Совместимость с браузерами

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка Нет Nightly build Нет Нет Нет [1]
Возможность Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка Нет Нет Nightly build Нет Нет Нет

[1] See bug 150131.

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: KolesnikovR, curdwithraisins, risentveber, Grinv
 Обновлялась последний раз: KolesnikovR,