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號