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;

 

posted @ 2025-10-29 14:05  SimoonJia  阅读(2)  评论(0)    收藏  举报