Wednesday, 21 February 2018

Sort Array of Objects by specific key value | Javascript





I'm having trouble sorting a specific array of objects from a small personal project I'm working on. I have never had trouble using the Array.prototype.sort() function before, but I wonder if something about the multiple object keys is affecting it...



Been staring at it for longer than I care to admit and just need to ask for help now. :|




Goal: Sort array of objects alphabetically relative to a specific key.value on each of them.



Thanks in advance!



JS Fiddle Here



Sort function example - (I recommend looking at the full Fiddle for context though).



var sorted = array.sort((a, b) => { return a.key > b.key; });



SOLVED



@Ryan helped me find that returned a boolean isn't enough, you need to explicitly return a positive or negative number, or 0.



@Brk showed me an awesome quick way to do it.



This post has a very detailed description.
Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function?




Thanks all! Sorry for the duplicate post :|


Answer



You can use localeCompare method which will returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order.



var sorted = array.sort((a, b) => {
return a.subreddit.localeCompare(b.subreddit)
});


DEMO



No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...