Sorting by array position

This is a nice little JS trick I use quite often, let’s say you got an array of objects such as

const classes = [
  {
    name: "CS101",
    weekday: "Friday",
  },
  {
    name: "CS349F",
    weekday: "Wednesday",
  },
  {
    name: "CS377E",
    weekday: "Tuesday",
  },
  {
    name: "CS390D",
    weekday: "Thursday",
  },
  {
    name: "CS294D",
    weekday: "Monday",
  },
  {
    name: "CS294S",
    weekday: "Friday",
  },
  {
    name: "CS802",
    weekday: "Wednesday",
  },
];

and you want to sort it by weekday. What you can do is define your desired order in an array like

const WEEKDAY_ORDER = [
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday",
  "Sunday",
];

and then you can use indexOf to sort by array indices:

classes.sort(
  (c1, c2) =>
    WEEKDAY_ORDER.indexOf(c1.weekday) - WEEKDAY_ORDER.indexOf(c2.weekday),
);

Want to read more like this?