array.filter没有返回数组

时间:2016-09-20 00:27:01

标签: javascript arrays

我正在尝试使用日期列搜索大量数据,以返回具有我需要的日期的帐户数组。我不能让数组填充任何数据。我错过了什么?

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;
}

1 个答案:

答案 0 :(得分:2)

您无法使用===来比较新对象实例。使用new创建的两个对象永远不会===彼此,即使它们具有相同的“值”,例如相同的内部日期。 This question显示了检查确切日期匹配的正确方法:

date1.getTime() === date2.getTime()

因此,您的rowNumber2过滤器应返回更多内容:

return fix.getTime() === todayPlus5.getTime();

请注意,只有当时间完全匹配时才会有效。如果过滤器仍显示空值,请记录两个日期以查看它们是否真正保持完全相同的时间。