Sortiere ein Array von Tagen in Javascript

8

Ich habe ein Array. Das Array kann 1 bis 7 eindeutige Strings von Tagnamen enthalten. Die Tagnamen werden von Montag bis Sonntag in der Reihenfolge angezeigt. - zB:

  

["Di", "Do", "Sun"]

Ich möchte JavaScript verwenden, um dieses Array so zu sortieren, dass die Reihenfolge mit heute beginnt.

ie: Wenn heute Freitag ist, sollte das sortierte Array

sein
  

["Sonne", "Di", "Do"]

Wenn heute Donnerstag ist, sollte das sortierte Array

sein
  

["Do", "Sun", "Di"]

Kann jemand helfen?

    
CMH 26.07.2013, 23:38
quelle

6 Antworten

8
%Vor%

Um den heutigen Wochentag zu erhalten, verwenden Sie new Date().getDay() . Dies setzt Sunday = 0, Monday = 1, ..., Saturday = 6 voraus.

%Vor%

Um die Liste der Wochentage zu erstellen, zerschneiden Sie die Liste der Namen:

%Vor%

(heute ist Freitag, also sorted_list ist ['Fri','Sat','Sun','Mon','Tue','Wed','Thu'] )

Um zu sortieren, verwenden Sie indexOf :

%Vor%

Alles zusammenfügen:

%Vor%     
SheetJS 27.07.2013, 00:00
quelle
4

Hier ist eine Funktion, die mir einfällt:

%Vor%

Die allgemeine Idee ist, die Wochentage neu zu arrangieren, indem Elemente vom Anfang bis zum Ende basierend auf dem heutigen Tag gedreht werden. Dann verwenden Sie diese Reihenfolge, um Ihr Eingabearray neu zuzuordnen. Anstatt tatsächlich zu sortieren, habe ich nur das daysOfWeek -Array basierend auf dem Inhalt des Eingabearrays gefiltert.

Ich bin mir nicht sicher, wie gut Array.filter unterstützt wird, daher sollten Sie vielleicht stattdessen eine generische for-Schleife verwenden, je nachdem, welche Browser Sie unterstützen möchten.

Hier ist ein Spiel , wo du auch damit spielen kannst.

Alternativ können Sie auch die integrierte Methode Array.sort nach einer ähnlichen Strategie verwenden:

%Vor%

Und hier ist eine weitere Geige , mit der du spielen kannst.

    
IgnisErus 26.07.2013 23:54
quelle
3
%Vor%     
chris 24.11.2016 19:37
quelle
1

Nur für den Fall, dass es uns jemals gelingt, einen Tag zu gewinnen oder zu verlieren, habe ich meinen gebaut, um keine fest codierte Tagesliste zu benötigen :) hier hofft man, dass wir eines Tages zwischen Samstag und Sonntag zusätzliche 24 Stunden bekommen!

%Vor%     
Pebbl 27.07.2013 00:28
quelle
0

Hier ist ein einfacher Weg, nur mit indexOf, Splice-Filter und Concat-Funktionen von Arrays, keine Schleife erforderlich:

%Vor%

Verwenden Sie

%Vor%     
dievardump 27.07.2013 17:12
quelle
0
%Vor%     
גלעד ברקן 27.07.2013 17:06
quelle