How to Sort Array of Objects by Two Fields in JavaScript
Suppose we have an array of objects with two fields that we’d like to sort by.
const arr = [
{ id: 0, set: 0 },
{ id: 1, set: 1 },
{ id: 2, set: 2 },
{ id: 0, set: 3 },
{ id: 1, set: 4 },
{ id: 2, set: 5 },
];
We can sort by multiple fields easily using sort() and the OR operator ||.
Sort ascending by two fields
Let’s say we want to sort ascending by id, then sort ascending by set.
arr.sort((a,b) => a.id - b.id || a.set - b.set);
Sort ascending then descending
What if we wanted to sort ascending by id, then sort descending by set?
arr.sort((a,b) => a.id - b.id || b.set - a.set);
Sort descending by two fields
What if we wanted to sort descending by set, then sort descending by id?
arr.sort((a,b) => b.set - a.set || b.id - a.id);