【问题标题】:stuck with trying to filter dates in a json object using React坚持尝试使用 React 过滤 json 对象中的日期
【发布时间】:2020-11-23 15:53:12
【问题描述】:

我正在使用 React,我需要有关过滤 JSON 对象中日期的最佳方法的建议,该对象是从对 API 的 fetch 调用中填充的。

我有一个日期范围选择器组件,它使用所选日期设置状态。在页面加载时,数据被填充到 HTML 表格中,当用户从日期范围选择器中选择所选日期并单击过滤器按钮时,我需要使用所选日期范围之间的结果更新 html 表格。

我的构造函数具有起始状态:

this.state = {
  bookings: {},
  selectionRange : {
    startDate: new Date(),
    endDate: new Date(),
    key: "selection"
  }
}

我的日期按钮来过滤日期,我尝试将日期从字符串转换为有效日期。

onbuttonsubmit()  {
  var options = { year: 'numeric', month: 'long', day: 'numeric' };
  console.log("Testing:", new Date(this.state.bookings.FromDate).toLocaleDateString([],options));
}
     
<button onButtonSubmit={this.onbuttonsubmit}>Filter Dates</button>

我附上了一张显示预订{} json 的图片:

【问题讨论】:

  • 所以你需要FromDate 在日期范围之间?

标签: javascript reactjs


【解决方案1】:

由于您的预订对象中的FromDate 是一个字符串并且过滤器的类型为Date,因此您可以执行以下操作,前提是您要基于FromDate 进行搜索:

 onbuttonsubmit = () =>  {
    this.setState( { bookings : this.state.bookings.filter( book => new Date(book.FromDate).getTime() >= this.state.startDate.getTime() && new Date(book.FromDate).getTime() <= this.state.endDate.getTime())});
}

【讨论】:

  • 谢谢你,我已经按照你的建议做了,但是我收到 typeError: cannot read property setState of undefined
  • 好的,所以你还没有绑定方法。然后查看我的更新答案。
  • Apostolos,因为我的 book.fromDate 是一个 json 字符串“2019-06-14T00:00:00”,所以 .getTime() 无效,我可以在函数中创建一个函数来解决这个问题吗? × TypeError: 无法读取未定义的属性“getTime”
  • 它是new Date(book.FromDate).getTime()。这是有效的
  • 在您的控制台上试试这个new Date('2019-04-26T00:00:00').getTime() 看看它是否正常工作
猜你喜欢
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 2021-10-24
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多