按日期排序的反应

问题描述:

我有一个反应组件,呈现过去发生的“会议”列表。按日期排序的反应

我试图让它对每个过去的会议进行排序,以便过去最近发生的那些会在顶部。

我正在检查会议是否发生在过去,如果是,显示它。 (这是工作的罚款)

这是我的渲染方法:

render(){ 
let past_meetings = this.store.meetings.map((meeting, i) => { 
    if (meeting.scheduled_for < moment.utc(new Date()).format()){ 
    return (<MeetingItem meeting={meeting} key={`meeting-${meeting.id}`} />) 
    } else { 
    return ; 
    } 
}) 

return(
    <div className=""> 
    <div className=""> 
     <h3 className="">Past Meetings</h3> 
     <div className="" > 
     {past_meetings} 
     </div> 
    </div> 

    </div> 
) 
} 

目前的会议显示为:如果是在过去,在顶部显示进一步发生。

我的目标是让它表现如下:如果它最近发生了,则显示在最上面。

尝试过这样的事情与lodash的.sortBy():

let sorted_meetings = _.sortBy(past_meetings, function(e){ 
return - (new Date(e.scheduled_for)) 
} 

没有成功。

meeting.scheduled_for 
// returns 2017-03-03T03:33:00.000Z 

试图比较scheduled_for的但没有太多运气。

这可以用_ ???完成或者其他方式?

+0

你使用的是什么版本loadash会议排序? – Nicholas

+0

@Nicholas^4.17.4 – JessiAbrams

+0

您需要降序排序。 我不知道你正在使用什么版本的Loadash。您可以尝试接受答案中的选项。 [此链接。](http://*.com/questions/22928841/lodash-multi-column-sortby-descending/29082994#29082994) – Nicholas

您可以使用sort()reverse()降序排列

var sorted_meetings = meetings.sort((a,b) => { 
    return new Date(a.scheduled_for).getTime() - 
     new Date(b.scheduled_for).getTime() 
}).reverse(); 
+0

谢谢,这是有帮助的。我现在遇到的问题实际上是在render方法的返回中使用这个,因为“sorted_meetings”不会在那里定义。 – JessiAbrams

+1

@JessiAbrams如果你打开一个新的问题,我会看看 – FuzzyTree