为什么我的find方法返回未定义?

凯尔

我正在重新创建许多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我相信两者都应该做同样的工作。但是,他们没有。有人可以指出发生了什么吗?

haim770

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章