在 JavaScript 中需要帮助编写自定义过滤器函数
Need help writing custom filter function in JavaScript
我写了一个 each()
函数,它可以正常工作,其行为与下划线的 _.each()
完全相同。我想编写一个类似于 filter()
的函数,但是对于 运行 通过 callback/predicate函数。
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
。我做错了什么?
你的过滤功能没有return任何东西。尝试 return 调用 each() 的结果。
很明显;你在每个方法中 return 真假。
从过滤功能来看你return没什么。
如果你想写一个过滤器函数,你应该这样做:
var filter = function(collection, callback){
var result = [];
each(collection, function(item){
result.push((callback(item))?true:false);
}
);
return result;
};
另一种可能性是修改您的 each,使其 return 成为一个数组,其中包含 return 内的每个值。
我写了一个 each()
函数,它可以正常工作,其行为与下划线的 _.each()
完全相同。我想编写一个类似于 filter()
的函数,但是对于 运行 通过 callback/predicate函数。
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
。我做错了什么?
你的过滤功能没有return任何东西。尝试 return 调用 each() 的结果。
很明显;你在每个方法中 return 真假。
从过滤功能来看你return没什么。
如果你想写一个过滤器函数,你应该这样做:
var filter = function(collection, callback){
var result = [];
each(collection, function(item){
result.push((callback(item))?true:false);
}
);
return result;
};
另一种可能性是修改您的 each,使其 return 成为一个数组,其中包含 return 内的每个值。