如何在javascript中将变量传递给过滤函数?
在这种情况下,我试图将值传递给变量“maxage”:
var dateFilter = function(value,maxage) { // Age in miliseconds
if(Date.now() - value < maxage) {
return value;
} else {
return false;
}
}
dates.filter(dateFilter,500);
如何将值500
作为maxage
传递给过滤器?
答案 0 :(得分:12)
您需要调用Function.prototype.bind
来创建类似于默认参数的内容。
dates.filter(dateFilter.bind( null, 500 ));
然后使用dateFilter
PLUS“自动传入值”500
来调用 value, index, array
回调。
function dateFilter( customArgument, value, index, array ) {
// customArgument === 500
}
答案 1 :(得分:9)
maxage
已绑定到this
。请考虑以下事项:
var dateFilter = function(value) {
if(value < this) return value;
}
var dates = [1,2,3];
console.log(dates.filter(dateFilter,2));
> [1] // Output.
MDN documentation将filter
签名显示为array.filter(callback[, thisObject])
答案 2 :(得分:2)
也许没有必要过分复杂化,尝试简单的方法:
var maxage = 500,
newDates = dates.filter(function(value) {
return Date.now() - value < maxage;
});