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

Object.entries() метод возвращает массив собственных перечисляемых свойств указанного объекта в формате [key, value], в том же порядке, что и в цикле for...in (разница в том, что for-in также перечисляет свойства из цепочки прототипов). Порядок элементов в массиве который возвращается Object.entries() не зависит от того как обьект обьявлен. Если существует нужда в определенном порядке, то  масив должен быть отсортирован до вызова метода, например Object.entries(obj).sort((a, b) => a[0] - b[0]);.

Синтаксис

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' в этой спецификации.
Черновик Пока не включена в официальный проект. Смотрите это  предложение stage3 для проекта текста текущей спецификации

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

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
Базовая поддержкаChrome Полная поддержка 54Edge Полная поддержка 14Firefox Полная поддержка 47IE Нет поддержки НетOpera Полная поддержка 41Safari Полная поддержка 10.1WebView Android Полная поддержка 54Chrome Android Полная поддержка 54Edge Mobile Полная поддержка ДаFirefox Android Полная поддержка 47Opera Android Полная поддержка 41Safari iOS Полная поддержка 10.1Samsung Internet Android Полная поддержка 6.0nodejs Полная поддержка 7.0.0
Полная поддержка 7.0.0
Полная поддержка 6.5.0
Отключено
Отключено From version 6.5.0: this feature is behind the --harmony runtime flag.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

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

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

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