过滤功能不适用于日期(javascript)

时间:2017-07-17 13:47:03

标签: javascript arrays filter

我尝试按设定日期过滤数组

var di = new Date(this.state.date.slice(0, 4),
                  this.state.date.slice(5, 7),
                  this.state.date.slice(8, 10),
                  '10',
                  '00');
var result2 = result.filter(function(number) {
  return (number[2] == di)
});

但结果是一个空数组(result2)。

下面是console.log(di)的截图和数组的一个元素 -

enter image description here

2 个答案:

答案 0 :(得分:4)

您无法使用==在javascript中比较两个不同的对象 这将返回true仅比较对象的相同实例。

要使代码正常工作,您可以尝试将日期转换为字符串。

var result2 = result.filter(function(number) {
  return (number[2].toString() == di.toString())
});

或使用Date对象的.getTime()方法

var result2 = result.filter(function(number) {
  return (number[2].getTime() == di.getTime())
});

答案 1 :(得分:-3)

filter函数的第一个参数是一个数组元素,而不是数组本身,所以它应该是:

result.filter( function(el) { return (el == di); } );