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),
);
No AI tooling was used in the creation of this article. More articles: