私は次のような形式の辞書を持っています
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
}
ベストアンサー1
要約
- ECMAScript 2017 では、 を呼び出すだけです
Object.entries(yourObj)
。 - ECMAScript 2015 では、s で可能です
Map
。 - ECMAScript 5ではそれは不可能です。
ECMAScript 2017
ECMAScript 2017では新しい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
ECMAScript 2015では、オブジェクトの代わりにオブジェクトObject.entries
を使用しMap
て反復処理することができます。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
、 このような
'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 5:
いいえ、オブジェクトでは不可能です。
繰り返して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
または
Object.keys(dictionary).forEach(function(key) {
console.log(key, dictionary[key]);
});