最优雅的方式从JQuery $ .each中返回值?

时间:2011-01-09 01:52:29

标签: javascript jquery

我想知道是否有更优雅的方式从我粘贴的函数中返回一个值:“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 个答案:

答案 0 :(得分:2)

不,您无法从.each()返回值。

如果你执行return false;,它将停止循环,因此它的运行时间不会超过它所需的时间,但你需要使用现在正在做的变量。

如果您不使用$.each(),而是使用for循环,那么您将能够:

return Tracker.pointofinterestcategories[ i ].imageurl

答案 1 :(得分:0)

我仍然会使用for循环。

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