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

lis*_*aro 4 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);
Run Code Online (Sandbox Code Playgroud)

如何将值传递500给过滤器maxage

jAn*_*ndy 12

您需要调用Function.prototype.bind以创建类似于默认参数的内容.

dates.filter(dateFilter.bind( null, 500 ));
Run Code Online (Sandbox Code Playgroud)

dateFilter然后使用500PLUS" 自动传入值 " 调用回调value, index, array.

function dateFilter( customArgument, value, index, array ) {
    // customArgument === 500
}
Run Code Online (Sandbox Code Playgroud)


Aes*_*ete 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.
Run Code Online (Sandbox Code Playgroud)

MDN文档显示filter签名是array.filter(callback[, thisObject])