15

for each...in loopの MDN ページによると、この構成は非推奨です。まったく同じことを行う代替手段はありますか? for...of ループは、整数でない (独自の列挙可能な) プロパティを反復処理しません。代替手段がない場合、なぜ彼らはそれを非推奨にしたのですか?

4

3 に答える 3

17

オブジェクトのすべてのプロパティを反復処理するには、次のobjようにします。

for (var key in obj) {
   console.log(key, obj[key]);
}

継承されたプロパティを避けたい場合は、これを行うことができます:

for (var key in obj) {
   if (!obj.hasOwnProperty(key)) continue;
   console.log(key, obj[key]);
}
于 2012-09-28T09:30:45.597 に答える
12

新しいECMAScript5thEdition関数を利用できます。

Object.keys(obj).forEach(function (key) {
    console.log(key, obj[key]);
});
于 2012-09-28T09:50:06.947 に答える
3

まったく同じことを行う代替手段はありますか?

コードのfor ... inブロックで最初に行うことはfoo[propertyname]、変数へのコピーです。

于 2012-09-28T09:30:49.480 に答える