2017-02-16 2 views
1

Ich habe einige Wochentag basierte Daten wie folgt:Wie wird ein Array basierend auf beliebigen Objektwerten sortiert?

[{ 
    "dayOfWeek": "TUESDAY", 
    "startTime": "19:30:00", 
    "endTime": "21:15:00" 
}, { 
    "dayOfWeek": "SATURDAY", 
    "startTime": "19:15:00", 
    "endTime": "21:00:00" 
}, { 
    "dayOfWeek": "FRIDAY", 
    "startTime": "19:00:00", 
    "endTime": "20:15:00" 
}, { 
    "dayOfWeek": "THURSDAY", 
    "startTime": "19:15:00", 
    "endTime": "20:30:00" 
}, { 
    "dayOfWeek": "WEDNESDAY", 
    "startTime": "19:30:00", 
    "endTime": "20:45:00" 
}, { 
    "dayOfWeek": "SUNDAY", 
    "startTime": "19:30:00", 
    "endTime": "20:45:00" 
}, { 
    "dayOfWeek": "MONDAY", 
    "startTime": "19:30:00", 
    "endTime": "21:00:00" 
}] 

jedoch diese Daten aus einer API mit unregelmäßigen Sortierung kommt, die vertraut werden kann, nicht. Ich muss dieses Array mit Werten von MONTAG bis SONNTAG absteigend sortieren. Wie kann ich das machen? Ich nehme an, ich muss eine Art Karte für die Suche einrichten?

+1

Recht, ein Objekt, deren Taste macht die Tagesnamen und deren Werte sind 0 bis 6 (oder 1 bis 7 oder was auch immer Sie wollen) und dann verwenden, in Ihrem '.Sort () 'Komparatorfunktion. – Pointy

+0

Siehe das Duplikat, das ich für ein Beispiel von dem, was @ Pointy erwähnt, –

+1

für dieses Beispiel markiert hat Eigentlich ist dieses Duplikat passender für Ihre Bedürfnisse: http://stackoverflow.com/questions/34066752/sort-object-of-weekdays-like-sunday-monday -Samstag –

Antwort

1

Sie könnten ein Objekt mit den Tagen und einem Wert zum Sortieren verwenden.

var array = [{ dayOfWeek: "TUESDAY", startTime: "19:30:00", endTime: "21:15:00" }, { dayOfWeek: "SATURDAY", startTime: "19:15:00", endTime: "21:00:00" }, { dayOfWeek: "FRIDAY", startTime: "19:00:00", endTime: "20:15:00" }, { dayOfWeek: "THURSDAY", startTime: "19:15:00", endTime: "20:30:00" }, { dayOfWeek: "WEDNESDAY", startTime: "19:30:00", endTime: "20:45:00" }, { dayOfWeek: "SUNDAY", startTime: "19:30:00", endTime: "20:45:00" }, { dayOfWeek: "MONDAY", startTime: "19:30:00", endTime: "21:00:00" }]; 
 

 
array.sort(function (a, b) { 
 
    var sort = { MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6, SUNDAY: 7 }; 
 
    return sort[a.dayOfWeek] - sort[b.dayOfWeek]; 
 
}); 
 

 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Verwandte Themen