// temp data
var array = [1,2,function() { }, 3, function() { }];
var cb = function() { console.log("foo"); }
var found = false;
console.log(_.map(array, function(val) {
if (_.isFunction(val) && !found) {
return found = true, _.compose(cb, val);
}
return val;
}));
這循環遍歷數組,並將它找到的第一個函數變成一個組合函數。使一個簡單的搜索算法更優雅
我討厭found = false
變量/計數器。我如何擺脫它?
作爲算法。
let found be 0
map value in array
if value satisfies condition and found is 0
let found be 1
return mutate(value)
else
return value
更新
使用for循環
for (var i = 0; i < array.length; i++) {
if (_.isFunction(array[i])) {
array[i] = _.compose(cb, array[i]);
break;
}
}
_.map
,_
,_.isFunction
,_.compose
是不是有一個'打破'語言中的聲明?我會用它來擺脫循環。 – 2011-05-16 21:57:28
@PeteWilson這就是我的想法。然後,我需要一個正常的循環,而不是枚舉。我想我會用for來重構它。 – Raynos 2011-05-16 22:00:39
在'console.log'中是否包含循環在這裏執行任何操作?該循環不會返回值 - 在Chrome控制檯中運行該值只會輸出「未定義」。 – nrabinowitz 2011-05-16 22:11:59