2011-01-09 66 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

相关问题