我有一个对象event数组,其中每个事件都有一个开始日期和一个结束日期。

我试图通过删除早于now的任何事件来过滤事件。然后,我尝试将事件分类为最新事件,然后在屏幕上显示它们。

我正在使用以下例程:

constructor(props) {

    // ..
    this.props.events = this.filterAndSortEvents(props.events);
}

filterAndSortEvents(events: Object)
{
    let Original = events;
    const now = new Date();

    // filter
    let Filtered = events.map(function(e) {
        if(e.endDate > Date.now())
        { return e }
    });

    // sort
    let Sorted = Filtered.sort(function(a,b) {
        return a.startDate > b.startDate ? -1 : a.startDate < b.startDate ? 1 : 0;
    });

    return Sorted;
}

但它不起作用:

最佳答案

也许您考虑使用 Array#filter 进行过滤。

let filtered = events.filter(e => e.endDate > Date.now());

您可以将时间的增量用作排序返回值( Array#sort 在原位工作)。
filtered.sort((a, b) => b.startDate - a.startDate);

然后返回filtered
return filtered;

只是一个小提示,通常是难以实现的功能,通常使用大写首字母书写。

08-05 21:19
查看更多