我正在重新创建许多Underscore.js方法,以全面研究JavaScript和编程。
下面是我尝试重新创建Underscore_.find()
方法的尝试。
var find = function(list, predicate) { // Functional style
_.each(list, function(elem){
if (predicate(elem)) {
return elem;
}
});
};
var find = function(list, predicate) { // Explicit style
if (Array.isArray(list)) {
for (var i = 0; i < list.length; i++) {
if (predicate(list[i])) {
return list[i];
}
}
} else {
for (var key in list) {
if (predicate(list[key])) {
return list[key];
}
}
}
};
我的第二种find
方法是使用for
循环和for in
循环工作。而我的第一个find
方法将返回undefined
。我相信两者都应该做同样的工作。但是,他们没有。有人可以指出发生了什么吗?
您return
只从内部(嵌套)函数find
返回,而您的函数实际上未返回任何内容,因此undefined
。
尝试以下方法:
var find = function(list, predicate) { // Functional style
var ret;
_.each(list, function(elem){
if (!ret && predicate(elem)) {
return ret = elem;
}
});
return ret;
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句