最近在做项目的时候对对象中的内容进行排序,一开始使用的方案一的时候因为测试的时候都是单个字母和单个数字,测试的时候没有测试单个字母和多位数字的排序,后面排序的时候出现混乱的情况;后面改用方案二的时候就解决了这个问题,示例如下。
方案一
arr.sort(function (a, b) {
if(typeof a === "object" && typeof b === "object" && a && b){
var value1 = a.text;
var value2 = b.text;
if (value1 === value2) {
return 0;
}
if(typeof value1 === typeof value2){
return value1 < value2 ? -1 : 1;
}
}
})
方案二
使用localeCompare完美解决
arr.sort(function(a, b) {
return a.text.localeCompare(b.text, 'zh-CN', { numeric: true })
})