需要帮助在JavaScript中编写自定义过滤器功能

时间:2016-01-18 22:21:03

标签: javascript filter undefined each

我已经编写了一个each()函数,该函数运行正常,其行为与下划线_.each()完全相同。我想编写一个与filter()类似的函数,而是为通过回调/谓词运行的每个元素返回truefalse功能

var filter = function(collection, callback){
    each(collection, function(item){
            if (callback(item)) {return true;}
            else {return false}
        });
};

console.log(filter([1,2,3,4,5], function(x) {return x % 2 == 0;}));

这就是我所拥有的,但它正在返回undefined。我做错了什么?

2 个答案:

答案 0 :(得分:1)

很明显;你在每种方法中都返回false。

从过滤器功能的角度来看,你什么都不返回。

如果你想编写一个过滤函数,你应该这样做:

var filter = function(collection, callback){
    var result = [];
    each(collection, function(item){
            result.push((callback(item))?true:false);
        } 
    );
    return result;  
};

另一种可能性是修改你的每个,所以它返回一个数组,其中包含已经返回的每个值。

答案 1 :(得分:0)

您的过滤功能不会返回任何内容。尝试从each()调用中返回结果。