web-dev-qa-db-ja.com

「foreach」ループに代わるJavaScript

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

15
user1537366

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

for ... inループでは、コードのブロックで最初にfoo[propertyname]を変数にコピーします。

3
Quentin

オブジェクト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]);
}
15
Denys Séguret

新しいECMAScript 5th Edition関数を利用できます:

Object.keys(obj).forEach(function (key) {
    console.log(key, obj[key]);
});
12