我有一个反应组件,它会呈现过去发生的“会议”列表。
我试图让它在每次过去的会议中排序,以便过去最近发生的那些会在最高层。
我正在检查会议是否发生在过去,如果是,请显示它。 (这很好)
这是我的渲染方法:
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 :(得分:7)
您可以使用sort()
和reverse()
按降序对会议进行排序
var sorted_meetings = meetings.sort((a,b) => {
return new Date(a.scheduled_for).getTime() -
new Date(b.scheduled_for).getTime()
}).reverse();