簡體   English   中英

將值傳遞給javascript數組過濾器?

[英]Pass values to javascript array filter?

如何在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傳遞給過濾器?

您需要調用Function.prototype.bind來創建類似於默認參數的東西。

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

然后使用500 PLUS“ 自動傳入值value, index, array調用dateFilter回調。

function dateFilter( customArgument, value, index, array ) {
    // customArgument === 500
}

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])

也許沒有必要使事情過於復雜,嘗試簡單的方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM