:私の質問はこのアボ行くための最善の方法であるであるので、しかし、私は、私が反復処理するつもりだ、リスト内のオブジェクトを大量に持っています
まず、真Objects
にはネイティブ.map()
メソッドがありません。.length
プロパティもありません。つまり、Arrays
またはArray-like-objects
(たとえばjQueryオブジェクト)について話しています。
しかし、ネイティブのfor
,while
またはdo-while
ループを使用するよりも、高速に反復する方法はありません。他のすべての関数演算は、各反復のための関数を実行する(推定する)。
jQueryの.each()
は、オブジェクトが渡されたときにループを実行します。for-in
これは、オブジェクトをループする方法としては、かなり早いです。自分でfor-in
を使うだけで、オーバーヘッドコールを保存することができます。
読みやすさの点でもう1つ「良い」方法は、.keys()
と.map()
のようなES5機能を使用することです。たとえば:
var myObj = {
foo: 'bar',
base: 'ball',
answer: 42,
illuminati: 23
};
Object.keys(myObj).map(function(prop) {
console.log(myObj[ prop ]);
});
私は、読みやすさ、納得感、パフォーマンスの面で非常に優れていると思います。もちろん、古いブラウザにはES5抽象ライブラリを使用するべきです。
しかし、ここでも、パフォーマンスの面でネイティブループを克服する方法はありません。
あなたの例は同じではなく(最初のコードスニペットの意味もありません)。リスト内の各要素に対して 'someFunction'を実行することを意味しますか?それは値を返し、リスト項目を戻り値で置き換えたいのですか?それは実際に 'map'の考え方です。 –