2024-04-25 09:06:04 发布
网友
我有一本字典的格式是
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 }
试试这个:
dict = {0:{1:'a'}, 1:{2:'b'}, 2:{3:'c'}} for (var key in dict){ console.log( key, dict[key] ); } 0 Object { 1="a"} 1 Object { 2="b"} 2 Object { 3="c"}
在ES2017中指定了Object.entries()方法(并且是supported in all modern browsers):
Object.entries()
for (const [ key, value ] of Object.entries(dictionary)) { // do something with `key` and `value` }
说明:
Object.entries()接受类似于{ a: 1, b: 2, c: 3 }的对象,并将其转换为一个键值对数组:[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]。
{ a: 1, b: 2, c: 3 }
[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
使用for ... of我们可以循环访问这样创建的数组的条目。
for ... of
由于保证每个迭代数组项本身都是一个双项数组,因此我们可以使用destructuring直接将变量key和value赋给它的第一个和第二个项。
key
value
Map
不,这是不可能的对象。
您应该使用^{}或^{}进行迭代,如下所示
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
for..in
或者
Object.keys(dictionary).forEach(function(key) { console.log(key, dictionary[key]); });
在ECMAScript 2015中,可以使用Map对象并用^{}迭代它们。引用那一页的例子
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"]
或者用^{}迭代,如下所示
'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
ECMAScript 2017将引入一个新函数^{}。你可以使用这个来迭代你想要的对象。
'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
试试这个:
在ES2017中指定了
Object.entries()
方法(并且是supported in all modern browsers):说明:
Object.entries()
接受类似于{ a: 1, b: 2, c: 3 }
的对象,并将其转换为一个键值对数组:[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
。使用
for ... of
我们可以循环访问这样创建的数组的条目。由于保证每个迭代数组项本身都是一个双项数组,因此我们可以使用destructuring直接将变量
key
和value
赋给它的第一个和第二个项。tl;博士
Map
sECMAScript 5:
不,这是不可能的对象。
您应该使用^{} 或^{} 进行迭代,如下所示
注意:上面的
if
条件是必要的,只要您想迭代对象本身的dictionary
属性。因为for..in
将遍历所有继承的可枚举属性。或者
ECMAScript 2015年
在ECMAScript 2015中,可以使用} 迭代它们。引用那一页的例子
Map
对象并用^{或者用^{} 迭代,如下所示
输出
或者
输出
ECMAScript 2017年
ECMAScript 2017将引入一个新函数^{} 。你可以使用这个来迭代你想要的对象。
输出
相关问题 更多 >
编程相关推荐