У меня есть словарь, который имеет формат
dictionary = {0: {object}, 1:{object}, 2:{object}}
Как я могу перебрать этот словарь, выполнив что-то вроде
for((key,value) in dictionary){
//Do stuff where key would be 0 and value would be the object
}
javascript
object
iteration
nbroeking
источник
источник
for (let [key, value] of Object.entries(obj))
Нужен Бабель.Ответы:
ТЛ; др
Map
s.ECMAScript 5:
Нет, это невозможно с объектами.
Вы должны либо повторить с
for..in
, илиObject.keys
, как этоПримечание. Указанное
if
выше условие необходимо, только если вы хотите перебрать свойства, принадлежащиеdictionary
объекту. Так какfor..in
будет перебирать все унаследованные перечисляемые свойства.Или
ECMAScript 2015
В ECMAScript 2015 вы можете использовать
Map
объекты и повторять ихMap.prototype.entries
. Цитируя пример с этой страницы,Или повторить с
for..of
, как этоВывод
Или
Вывод
ECMAScript 2017
ECMAScript 2017 представит новую функцию
Object.entries
. Вы можете использовать это для итерации объекта, как вы хотели.Вывод
источник
Object.keys(dictionary).forEach(function(key) {…
очень читаемый и совместимый.Object.entries(object).forEach(([key, val]) => {...});
Попробуй это:
источник
Object.entries()
Метод был определен в ES2017 (и поддерживается во всех современных браузерах ):Объяснение:
Object.entries()
принимает объект , как{ a: 1, b: 2, c: 3 }
и превращает его в массив пар ключ-значение:[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
.С помощью
for ... of
мы можем перебрать записи созданного массива.Поскольку нам гарантировано, что каждый из элементов итерированного массива сам по себе является массивом из двух элементов, мы можем использовать деструктурирование для непосредственного присвоения переменных
key
иvalue
их первого и второго элементов.источник
Вы можете сделать что-то вроде этого:
источник
Попробуй это:
источник
ДОБРО ПОЖАЛОВАТЬ В 2020 * Слюни в ES6 *
Здесь есть несколько довольно старых ответов - воспользуйтесь преимуществами деструктуризации. На мой взгляд, это, без сомнения, самый хороший (очень читаемый) способ итерации объекта.
источник
forEach
наmap
выше, то можно агрегировать значения.map
затем вернет список указанных значений, что потенциально упростит код другими способами.Я думаю, что быстрый и легкий способ
просто проверьте документацию https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
источник
${key} ${value}
);});используя swagger-ui.js
ты можешь сделать это -
источник
Вы можете использовать ниже скрипт.
выходы
1 a
2 b
c 3
источник
В качестве улучшения принятого ответа, чтобы уменьшить вложенность, вы можете сделать это вместо этого, при условии, что ключ не наследуется:
Редактировать: информация о
Object.hasOwnProperty
здесьисточник