2017-03-01 15 views
4

Ich habe eine Reaktionskomponente, die Liste von "Meetings", die in der Vergangenheit aufgetreten sind.Reagieren, Sortieren nach Datum

Ich versuche, jedes vergangene Meeting zu sortieren, so dass diejenigen, die in der Vergangenheit aufgetreten sind, an der Spitze sein werden.

Ich überprüfe, ob das Treffen in der Vergangenheit aufgetreten ist, wenn ja, zeige es an. (Dies funktioniert gut)

Das ist meine Render-Methode:

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> 
) 
} 

Derzeit ist die Sitzungen wie gezeigt: Wenn es passiert ist weiter in der Vergangenheit zeigen, an der Spitze.

Mein Ziel ist es, es wie folgt zu zeigen: wenn es vor kurzem passiert ist, zeige es an der Spitze.

versucht so etwas wie dies mit .sortBy der lodash():

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

kein Erfolg.

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

versucht, die geplanten_für aber auch nicht viel Glück zu vergleichen.

kann dies mit _ ??? oder anders?

+0

, welche Version von loadash Sie verwenden? – Nicholas

+0

@Nicholas^4.17.4 – JessiAbrams

+0

Sie benötigen eine absteigende Sortierung. Ich weiß nicht, welche Version von Loadash Sie verwenden. Sie können die Optionen in der akzeptierten Antwort versuchen. [Dieser Link.] (Http://stackoverflow.com/questions/22928841/lodash-multi-column-sortby-descending/29082994#29082994) – Nicholas

Antwort

4

können Sie sort() verwenden und reverse() Treffen zu sortieren in absteigender Reihenfolge

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

Danke, das war hilfreich. Das Problem, das ich jetzt habe, verwendet dieses in der Rückgabe der Rendermethode, da dort keine "sorted_meetings" definiert werden. – JessiAbrams

+1

@JessiAbrams Wenn Sie eine neue Frage öffnen, werde ich einen Blick darauf werfen – FuzzyTree