在JQuery的$.each中,返回值最优雅的方式是什么?

3
我想知道是否有更优雅的方法来从我下面粘贴的函数“getImageURLforPOICategory”中返回值。
如您所见,我使用了JQuery的“each”函数来遍历对象数组,当找到匹配的值时,我想从“each”循环中返回结果,然后从包含each循环的函数中直接返回。
我使用了一个本地变量来“缓存”它,然后将其返回。我不确定这是否是最佳方法?是否有一种直接从each循环中返回值的方法?
Tracker.getImageURLforPOICategory = function (POICategoryID) {
 var url;
 $.each(Tracker.pointofinterestcategories, function () {
  if (this.id === POICategoryID) {
   url = this.imageurl;
   return;
  }
 }
 );
 return url;
};

感谢阅读,
祝好,
邓肯
2个回答

2
不,你无法从.each()中返回一个值。
如果你使用return false;,它将停止循环,这样循环时间就不会比需要的时间更长,但你仍需要像现在一样使用变量。
如果你不使用$.each(),而是使用for循环,你只需要:
return Tracker.pointofinterestcategories[ i ].imageurl

非常感谢。我想对于这样一个简单的操作,回归到标准的For循环是有意义的。谢谢,邓肯。 - Duncan_m

0

不过我仍然会使用 for 循环。

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

不错.. 几晚前我看到了 grep 函数并计划去探索它.. 谢谢你提供这个丰富的例子! - Duncan_m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接