2

I have some weekday-based data as follows:

[{
    "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"
}]

However, this data comes from an API with irregular sorting which cannot be trusted. I need to resort this array with values from MONDAY to SUNDAY, descending. How can I do that? I assume I have to set up some kind of map for lookup?

3
  • 1
    Right, make an object whose keys are the day names and whose values are 0 through 6 (or 1 through 7 or whatever you want) and then use that in your .sort() comparator function. Commented Feb 16, 2017 at 14:24
  • See the duplicate I marked for an example of what @Pointy mentioned Commented Feb 16, 2017 at 14:25
  • 1
    Actually this duplicate is more fitting for your needs: stackoverflow.com/questions/34066752/… Commented Feb 16, 2017 at 14:26

1 Answer 1

2

You could use an object, with the days and a value for sorting.

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

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.