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?
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With