2011-01-09 65 views
3

我想知道是否有更優雅的方式從我粘貼的函數中返回一個值:「getImageURLforPOICategory」。你可以看到我已經使用JQuery的「each」函數遍歷一個對象數組,當我找到匹配的值時,我想從「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循環讓我感覺這麼簡單的操作。乾杯,鄧肯。 – 2011-01-09 03:26:34

0

我還是用一個for循環,但。

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

不錯..我幾天前看到了grep函數,並且正在計劃探索它..感謝這個肉體的例子! – 2011-01-09 04:36:45

相關問題