6

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ですか?

4

3 に答える 3

13

デフォルトの引数Function.prototype.bindに似たものを作成するには、を呼び出す必要があります。

dates.filter(dateFilter.bind( null, 500 ));

dateFilter次に、コールバックは500PLUS「自動的に渡された値」で呼び出されますvalue, index, array

function dateFilter( customArgument, value, index, array ) {
    // customArgument === 500
}
于 2012-12-07T01:51:04.390 に答える
10

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ドキュメントには、filter署名がarray.filter(callback[, thisObject])

于 2012-12-07T01:51:26.887 に答える
3

多分、物事を過度に複雑にする必要はありません。簡単な方法を試してください。

var maxage = 500,
    newDates = dates.filter(function(value) {
        return Date.now() - value < maxage;
    });
于 2012-12-07T01:51:18.743 に答える