如何在JavaScript中对字符串排序

时间:2020-03-05 18:49:49  来源:igfitidea点击:

我有一个对象列表,希望根据类型为string的字段" attr"进行排序。我尝试使用-

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

但是发现-似乎不适用于JavaScript中的字符串。如何根据字符串类型的属性对对象列表进行排序?

解决方案

回答

根据示例使用String.prototype.localeComparea:

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

我们将a.attr强制为字符串以避免出现异常。自Internet Explorer 6和Firefox 1开始,已经支持localeCompare。我们可能还会看到以下使用的不符合语言环境的代码:

if (item1.attr < item2.attr)
  return -1;
if ( item1.attr > item2.attr)
  return 1;
return 0;

回答

我们应在此处使用>或者<和==。因此解决方案将是:

list.sort(function(item1, item2) {
    var val1 = item1.attr,
        val2 = item2.attr;
    if (val1 == val2) return 0;
    if (val1 > val2) return 1;
    if (val1 < val2) return -1;
});