需要帮助在 JavaScript 中编写自定义过滤器函数

Need help writing custom filter function in JavaScript

本文关键字:自定义 过滤器 函数 帮助 JavaScript      更新时间:2023-09-26

我写了一个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.我做错了什么?

很明显 ; 你在每个方法中都返回 true 或 false。

从过滤器功能的角度来看,您什么也没返回。

如果你想写一个过滤器函数,你应该做这样的事情:

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

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

你的过滤器函数不返回任何内容。尝试返回 each() 调用的结果。