localeCompare根据名称排序(中文、英文、数字)
localeCompare() 是字符串的方法,用来比较两个字符串在特定语言环境下的排序顺序。
chars.sort((a, b) => a.name.localeCompare(b.name));
是按对象的 name 属性 按语言规则(通常是字母或拼音顺序)从小到大排序。
相比直接用 >、< 比较字符串,localeCompare 更智能,比如会正确处理大小写和中文拼音顺序。
排序规则
let chineseChars = [],
chars = [];
newV.forEach((asset) => {
// 判断是否为中文
if (/^[\u4e00-\u9fa5]*$/.test(asset.name.charAt(0))) {
chineseChars.push(asset); // 姓名首字符为中文的
} else {
chars.push(asset); // 姓名首字符非中文的(字母,数字)
}
});
chars.sort((a, b) => a.name.localeCompare(b.name));
chineseChars.sort((a, b) => a.name.localeCompare(b.name));
let arr = chars.concat(chineseChars);
// arr.sort((a, b) => b.systemDefault - a.systemDefault);//额外字段要求
this.dataCopy = arr;

浙公网安备 33010602011771号