Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to sort strings in JavaScript

I have a list of objects I wish to sort based on a field attr of type string. I tried using -

list.sort(function (a, b) {     return a.attr - b.attr }) 

but found that - doesn't appear to work with strings in JavaScript. How can I sort a list of objects based on an attribute with type string?

like image 802
airportyh Avatar asked Sep 09 '08 03:09

airportyh


1 Answers

Use String.prototype.localeCompare a per your example:

list.sort(function (a, b) {     return ('' + a.attr).localeCompare(b.attr); }) 

We force a.attr to be a string to avoid exceptions. localeCompare has been supported since Internet Explorer 6 and Firefox 1. You may also see the following code used that doesn't respect a locale:

if (item1.attr < item2.attr)   return -1; if ( item1.attr > item2.attr)   return 1; return 0; 
like image 79
Shog9 Avatar answered Sep 30 '22 16:09

Shog9