array.filter不返回数组
问题描述:
我正在尝试使用日期列来搜索大量数据以返回具有所需日期的帐户数组。我无法让数组填充任何数据。我错过了什么?array.filter不返回数组
var accounts = accountInfo.getRange('A2:AJ').getValues();
var maxRow = accountInfo.getMaxRows();
var today = new Date();
today.setHours(0,0,0,0);
var todayPlus5 = addDays(today, 5);
function reviewPriorityFilter(){
var filtered = accounts.filter(rowNumber2);
accounts = filtered;
Logger.log(filtered);
}
function rowNumber2(value){
var fix = new Date(value[15]);
fix.setHours(0,0,0,0);
return fix === todayPlus5;
}
function addDays(date, days){
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
答
您不能使用===
来比较新的对象实例。使用new
创建的两个对象绝不会彼此对立,即使它们具有相同的“值”,例如相同的内部日期。 This question显示了适当的方式来检查确切的日期匹配:
date1.getTime() === date2.getTime()
所以你rowNumber2
过滤器应返回更多的东西一样:
return fix.getTime() === todayPlus5.getTime();
请记住这一点,如果时间都是正是只会工作匹配。如果过滤器仍显示空值,请记录两个日期以查看它们是否确实保持完全相同的时间。
什么是_is_ array.filter返回?变量'accounts'包含什么?请确保提供了[最小,完整和可验证的示例](http://*.com/help/mcve) – Hamms
您是否尝试过调用'rowNumber2'函数? =>'accounts.filter(rowNumber2());' – Davion
@Davion这将是一个布尔值; 'filter'具有一个函数。 'rowNumber2'本身应该被传递。 – qxz