使用 sort
一般是针对数值数组的排序操作,
arr.sort((a,b) => a - b);
但是配合 String.localeCompare()
方法,就可以实现中文字符排序
可见它的排序规则大体是拼音的首字母从 a-z 进行排序,且因此重复的文字会并集在一起。
配合排序的调用,可对数组或者对象成员作为比较值,对整个数组进行排序。
中文数组排序
let strList = ['张三', '李四', '啊虎', '曾哥', '啊虎', '张三'];
strList.sort((a, b) => {
return a.localeCompare(b, 'zh-Hans-CN');
});
console.log(strList); // [ '啊虎', '啊虎', '曾哥', '李四', '张三', '张三' ]
我们原以为 曾[zeng]
哥,但是系统识别为 曾[ceng]
哥,那这 多音字 的问题,你自己看着办...
依据中文成员排序
let strList = [
{name:'张三',age:12},
{name:'李四',age:22},
{name:'王五',age:41},
{name:'老六',age:15},
];
strList.sort((a, b) => {
return a.name.localeCompare(b.name, 'zh-Hans-CN');
});
console.log(strList);
/*
结果:
[
{ name: '老六', age: 15 },
{ name: '李四', age: 22 },
{ name: '王五', age: 41 },
{ name: '张三', age: 12 }
]
*/