JavaScript: Sort an array of objects by a string property
Date: 2019-06-03 | javascript | array | sort | tutorial |
problem
I've got an array of objects that I'd like to be sorted by a particular property. How do I do this?
solution
Let's say that you have an array of objects with structure like:
{
text: string;
value: string;
}
And let's say that you would like all of these objects sorted in the resulting array by text, not by value. You do this by:
let myArray = [];
myArray.push(
{
text: "1",
value: "IShouldBeFirst"
}
);
myArray.push(
{
text: "3",
value: "IShouldBeThird"
}
);
myArray.push(
{
text: "2",
value: "IShouldBeSecond"
}
);
// this is the sorting stuff
myArray.sort(
(a, b) =>
a.text === b.text
? 0
: a.text > b.text
? 1
: -1);
for(let element of myArray) {
console.log(element.value);
}
/*
Expected result:
* "IShouldBeFirst"
* "IShouldBeSecond"
* "IShouldBeThird"
*/
The way this works is that Array.sort
takes in two elements a
and b
and expects you to write a comparator with return values either negative, positive, or zero in order to determine which element goes first. In order to sort by our property, we simply pass in a comparator that only compares that property.
Read more about Array.sort
on GeeksforGeeks
did this help?
I regularly post about tech topics I run into. You can get a periodic email containing updates on things I've built by subscribing here
Want more like this?
The best / easiest way to support my work is by subscribing for future updates and sharing with your network.