7

次のスクリプトを使用してオブジェクトを反復処理しています (どちらが最適かわかりません。どちらが最適か教えてください)。

var days = {Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6};

$.each(days, function(key, value){
    $('#days').append('<li>' + key + '(' + value + ')</li>');
});


for(var key in days){
    $('#days').append('<li>' + key + '(' + days[key] + ')</li>');
}
4

3 に答える 3

4

いずれにせよ、そのセレクターをキャッシュする必要があります。

var elem = $( '#days' );
$.each(days,function(key,value){
    elem.append('<li>'+key+'('+value+')</li>');
});

この場合、.each() の方が適しています。柄がきれいになりました。

for ループでは、継承されたプロパティを浚渫しないように obj.hasOwnProperty(key) を使用する必要があります...これにより、インデントの別のレイヤーが追加されます。

var elem = $( '#days' );
for( var key in days ){
  if( days.hasOwnProperty( key ) ){
    elem.append('<li>'+key+'('+days[key]+')</li>');
  }
}
于 2012-09-14T04:37:54.097 に答える
2

パフォーマンス テストを行わなくても、ネイティブの javascript for loop の方が高速であることは明らかですが、10 ~ 20 個の小さなアイテムなどの小さな配列では大きな違いはありません。したがって、好きな方を使用してください。

于 2012-09-14T04:35:08.713 に答える
0

の特徴$.each: 関数が戻ると、ループを停止しますfalse。オブジェクトと配列の両方で機能します。$(this)現在処理中の要素を参照します。

の欠点$.each: 引数の初期チェックを行い、要素ごとに関数呼び出しを実行する必要があるため、オーバーヘッドが少し大きくなります。

しかし、他の人が言ったように、大量のアイテムを処理していない限り、オーバーヘッドは無視できる可能性があります。

のもう 1 つの利点は$.each()、単語を簡単に認識できることです。ステートメントの先頭に単語があると、コレクションをループしていることがわかります。検索も簡単です。

于 2012-09-14T04:32:48.307 に答える