我有一本格式为
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 }
Object.entries(yourObj)
Map
ECMAScript 2017 引入了一个新Object.entries功能。您可以根据需要使用它来迭代对象。
Object.entries
'use strict'; const object = {'a': 1, 'b': 2, 'c' : 3}; for (const [key, value] of Object.entries(object)) { console.log(key, value); }
a 1 b 2 c 3
在 ECMAScript 2015 中,没有,Object.entries但您可以改用Map对象并使用Map.prototype.entries. 引用该页面中的示例,
Map.prototype.entries
var myMap = new Map(); myMap.set("0", "foo"); myMap.set(1, "bar"); myMap.set({}, "baz"); var mapIter = myMap.entries(); console.log(mapIter.next().value); // ["0", "foo"] console.log(mapIter.next().value); // [1, "bar"] console.log(mapIter.next().value); // [Object, "baz"]
或迭代for..of,像这样
for..of
'use strict'; var myMap = new Map(); myMap.set("0", "foo"); myMap.set(1, "bar"); myMap.set({}, "baz"); for (const entry of myMap.entries()) { console.log(entry); }
[ '0', 'foo' ] [ 1, 'bar' ] [ {}, 'baz' ]
要么
for (const [key, value] of myMap.entries()) { console.log(key, value); }
0 foo 1 bar {} baz
不,对象不可能。
您应该使用 或 进行迭代for..in,Object.keys像这样
for..in
Object.keys
for (var key in dictionary) { // check if the property/key is defined in the object itself, not in parent if (dictionary.hasOwnProperty(key)) { console.log(key, dictionary[key]); } }
注意:if仅当您要遍历dictionary对象自己的属性时,才需要上述条件。因为for..in将遍历所有继承的可枚举属性。
if
dictionary
Object.keys(dictionary).forEach(function(key) { console.log(key, dictionary[key]); });