将值传递给javascript数组过滤器?

时间:2012-12-07 01:48:10

标签: javascript

如何在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传递给过滤器?

3 个答案:

答案 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 documentationfilter签名显示为array.filter(callback[, thisObject])

答案 2 :(得分:2)

也许没有必要过分复杂化,尝试简单的方法:

var maxage = 500,
    newDates = dates.filter(function(value) {
        return Date.now() - value < maxage;
    });