2011-01-09 14 views
3

「getImageURLforPOICategory」の下に貼り付けた関数から値を返すより洗練された方法があるかどうか疑問に思っていました。

私はJQueryの "e​​ach"関数を使ってオブジェクトの配列を繰り返し処理していますが、一致する値が見つかると "each"ループから結果を返したいと思います各ループを含む関数です。

私はそれを "キャッシュ"するためにローカル変数を使用しましたが、それを返しています。これが最善のアプローチだと私は完全には分かりません。各ループ内から直接値を返す方法はありますか?読書のための

Tracker.getImageURLforPOICategory = function (POICategoryID) { 
var url; 
$.each(Tracker.pointofinterestcategories, function() { 
    if (this.id === POICategoryID) { 
    url = this.imageurl; 
    return; 
    } 
} 
); 
return url; 
}; 

おかげで、

乾杯、

ダンカン

答えて

2

いいえ、あなたは.each()から値を返すことはできません。

return false;を実行するとループが停止し、必要以上に長く実行されませんが、今のように変数を使用する必要があります。

あなたが$.each()を使用していますが、代わりにforループを使用しない場合は、あなただけのことができるようになります。

return Tracker.pointofinterestcategories[ i ].imageurl 
+0

大変ありがとうございます。標準のForループに戻すことは、私が推測するような簡単な操作のための感覚を作ります。乾杯、ダンカン。 –

0

私はまだかかわらず、forループを使用すると思います。

Tracker.getImageURLforPOICategory = function (POICategoryID) { 
    return $.grep(Tracker.pointofinterestcategories, function (item) { 
     return item.id === POICategoryID; 
    })[0].imageurl; 
} 
+0

ニース..数日前にgrepの機能を見て、それを探索しようとしていました。 –

関連する問題