1

for in ループを使用せずにオブジェクトのプロパティを反復処理する方法はありますか?

Nicholas C. Zakas によると、for in ループが for ループよりもオブジェクトを反復処理するのに 8 倍の時間がかかりますが、名前を 1、2 などに変更せずにオブジェクトのプロパティを反復処理する方法を見つけることができません。 、3などの魔女は理想的ではありません。

速度は私にとって主な関心事です。

4

2 に答える 2

2

できません。オブジェクトにはインデックス付きのプロパティがありません。

于 2012-06-12T09:29:56.820 に答える
2

キーを保持する別の配列を持つことができます。このようなもの:

var obj = {
    'key': 'value',
    'some': 'other value'
},
    arr = [ 'key', 'some' ];

for ( var i = 0, l = arr.length; i < l; i++ ) {
    console.log( obj[ arr[ i ] ] );
}

しかし、それは醜いです。この種の場合のパフォーマンスがボトルネックになることはありません。むしろ読みやすさを優先する必要があります。そこまでのコードは、次の方法で実行できます。

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

これは、よりクリーンで読みやすいものです。(for..in使用することもできます。これは例のためのものです)

于 2012-06-12T09:38:28.267 に答える