Reactjs 反应:如何根据日期筛选事件

Reactjs 反应:如何根据日期筛选事件,reactjs,filter,Reactjs,Filter,我在js文件的表中显示事件,如下所示: // index.component.js import React, { Component } from 'react'; import axios from 'axios'; import TableRow from './TableRow'; import moment from 'moment'; export default class Index extends Component { constructor(props) { su

我在js文件的表中显示事件,如下所示:

 // index.component.js

import React, { Component } from 'react';
import axios from 'axios';
import TableRow from './TableRow';
import moment from 'moment';
export default class Index extends Component {

constructor(props) {
  super(props);
  this.state = {event: []};
}
componentDidMount(){
  axios.get('http://localhost:4000/event')
    .then(response => {
      this.setState({ event: response.data });

    })
    .catch(function (error) {
      console.log(error);
    })
}


tabRow(){
  var events = this.state.event
  events.sort((a,b) => {return new Date(a.startDate) - new 
Date(b.startDate)} ) ;
  return events.map(function(object, i){
  return <TableRow obj={object} key={i} />;
});
}


render() {
  return (
    <div>
      <table className="table table-striped" style={{ marginTop: 20 , width:700}}>
        <tbody>
          { this.tabRow() }
        </tbody>
      </table>
    </div>
  );
}
//index.component.js
从“React”导入React,{Component};
从“axios”导入axios;
从“./TableRow”导入TableRow;
从“力矩”中导入力矩;
导出默认类索引扩展组件{
建造师(道具){
超级(道具);
this.state={event:[]};
}
componentDidMount(){
axios.get()http://localhost:4000/event')
。然后(响应=>{
this.setState({event:response.data});
})
.catch(函数(错误){
console.log(错误);
})
}
塔布罗(){
var events=this.state.event
events.sort((a,b)=>{返回新日期(a.startDate)-新
日期(b.起始日期)};
返回事件.map(函数(对象,i){
返回;
});
}
render(){
返回(
{this.tabRow()}
);
}
}

My table.js
//TableRow.js
类TableRow扩展组件{
建造师(道具){
超级(道具);
}
render(){
返回(
{this.props.obj.event_name}
{矩(this.props.obj.startDate).format(“mmmmmd,Y”)}
删除
);
}
}
导出默认表行;

现在,我正在使用事件排序功能,正如您在上面提供的代码中所看到的,根据日期对事件进行排序,最早的事件是第一个列出的事件。这很有效。我想过滤数组,这样已经过去的事件就不会出现在我的最终表中。如何将其与当前日期进行比较并过滤掉旧事件

您需要从事件日期中减去当前日期,然后检查它是否小于0。如果是,那就是过去了,你可以忽略它。因此,过滤器函数应该如下所示:

const dates = ["2018-09-12", "2018-10-18", "2018-12-30"];
const filteredDates = dates.filter(d => new Date(d) - new Date() > 0);
这就是你的情况:

events = events.filter(a => new Date(a.startDate) - new Date > 0);

它们总是被分类和过滤吗?或者它是反向的?现在排序正在正确进行。只需要过滤功能。
events = events.filter(a => new Date(a.startDate) - new Date > 0);