我正在試用函數式Javascript並遇到了一個有趣的情況。我有一個foreach函數需要一個集合和函數對象:如何打破函數式迭代?
var Utils = {};
// Applies a functor to each item in a collection.
Utils.foreach = function(collection, functor)
{
for (var i = 0; i < collection.length; i++)
{
functor(collection[i]);
}
};
這很酷。但是現在我要實現的另一個功能:
// Checks if a collection contains an item.
Utils.has = function(collection, item)
{
Utils.foreach(collection, function(obj) {
if (item === obj) {
return true; // How to force a return from the foreach function?
}
});
return false;
};
正如你看到的,我不能執行「有」的功能,因爲我return語句不破迭代。
有人可以推薦這個問題的解決方案嗎?
您需要使用閉包捕獲布爾標誌變量來指示是否應進一步處理項目,並根據需要翻轉標誌。 – 2010-02-12 22:17:46
只需使用'Array.some'(https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/some)。 – kennytm 2010-02-12 22:22:14
檢查jQuery的'each'方法。 – 2010-02-12 22:59:22