我已经编写了一个each()
函数,该函数运行正常,其行为与下划线_.each()
完全相同。我想编写一个与filter()
类似的函数,而是为通过回调/谓词运行的每个元素返回true
或false
功能
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
。我做错了什么?
答案 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()调用中返回结果。