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