<p>I have a list of objects I wish to sort based on a field <code>attr</code> of type string. I tried using <code>-</code></p>

<pre><code>list.sort(function (a, b) {
    return a.attr - b.attr
})
</code></pre>

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

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;
```
```