I was asked a great question recently about filtering and sorting arrays. At first, it seemed trivial:
If I have an array of objects, and I want to be able to
filter()by multiple properties, can I do that?
And the answer is, of course, sure. Absolutely. The way
.filter() function returns, it can be fed straight into a second
.filter(), and to as many filters as you like.
But if we want to sort by more than one property, that seems a little trickier. After all, if we sort by one property, then sort by a second, we've lost the first.
How about if we use something like
.reduce() instead? We could use that to reduce the array to an object whose properties are the first sort values, then set each of those properties to an array of items containing those values, and sort them!
And just like that, we're down the rabbit hole. There has to be an easier way.
As it happens, there is. It's good old
Array.sort() all over again.