[英]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.