如何在JavaScript中对字符串排序
时间:2020-03-05 18:49:49 来源:igfitidea点击:
我有一个对象列表,希望根据类型为string的字段" attr"进行排序。我尝试使用-
list.sort(function (a, b) { return a.attr - b.attr })
但是发现-
似乎不适用于JavaScript中的字符串。如何根据字符串类型的属性对对象列表进行排序?
解决方案
回答
根据示例使用String.prototype.localeCompare
a:
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; });