//1.对数字的排序 let arr=[25,33,3,6,9,7,8,1,2,5,11,18,599,43]; //从小到大排序 arr = arr.sort((a,b)=>{
return a-b }); //从大到小排序 arr = arr.sort((a,b)=>{
return b-a }); //2.对英文字母排序 let arr = ['abc','bcd','aedc','bdcs','qsedd','sasdf','yrdsx']; arr.sort((a,b)=>{
let a1=a.toUpperCase(), b1=b.toUpperCase();//将字母转换为大写字母 if(a1>b1){
return 1 }else if (b1 > a1) {
return -1; }else{
return 0; } }); //3.对汉字排序 let arr = ['翰合供应链公司分公司','翰合供应链公司', '华龙供应链公司','合风供应链公司', '大星供应链公司','鸿雨供应链公司', '源翔供应链公司','大溪谷供应链公司', '通万克瑞供应链公司','正成尊迅供应链公司', '烁琳供应链公司','克生勤杰供应链公司','松特立供应链公司']; arr.sort((a,b)=>{
for (let i = 0; i < (a+'').length; i++) {
const a1 = a[i]; const b1 = b[i]; if(b1!=undefined){
if ((a1).localeCompare(b1)!=0) {
return (a1).localeCompare(b1); } }else{
return 1 } } }); console.log(arr); //4.对汉字,字母,数字混合的字符串排序 /*【数字】按数值大小排序 【数字】在【字符串】前面 【非全汉字的字符串】在【全为汉字的字符串】的前面 【非全为汉字的字符串】从左到右依次比较字符,非汉字字符按Unicode 编码值排序,汉字按拼音首字母排序,汉字字符在非汉字字符的后面 【全为汉字的字符串】按拼音首字母排序*/ // 判断字符串是否全是中文 function isAllChinese(str) {
return /^[\u4E00-\u9FA5]+$/.test(str) } // 判断字符是否为中文 function isChinese(char) {
return /^[\u4E00-\u9FA5]$/.test(char) } let arr = ['王五', '9', 'a李四', 'abca', 'a张三', '张三', 10, 'b', '李四2', '10', 'abc123', 2, '09', 1, 12, '02', 'a', '01', 'abc11', 'abc2', '李四']; let ASCarr = arr.sort((a, b) => {
// 数字排在字符串前面 if (typeof a === 'number' && typeof b === 'string') {
return -1 } if (typeof a === 'string' && typeof b === 'number') {
return 1 } // 当存在非数字时--isNaN(a)==true//a为字符串 if (isNaN(a) || isNaN(b)) {
// 全汉字的排在非全汉字的后面 if (isAllChinese(a) && !isAllChinese(b)) {
return 1 } if (!isAllChinese(a) && isAllChinese(b)) {
return -1 } let result = 0 // 依次比较两个字符串的各项字符 a=a.toString(); b=b.toString(); for (let i = 0; i< ((a.length - b.length) ? b.length : a.length); i++) {
// 汉字排在非汉字的后面 let a1 = a[i], b1 = b[i]; if (!isChinese(a1) && isChinese(b1)) {
result = -1 } if (isChinese(a1) && !isChinese(b1)) {
result = 1 } // 若两个汉字进行比较,则比较他们的拼音首字母 if (isChinese(a1) && isChinese(b1)) {
result = a1.localeCompare(b1) } // 若已经比较出结果,则跳出循环,不再继续比较剩余字符 if (result !== 0) {
break } } //只要有一个无法转换为数字——转换为字符串进行比较——先按字符排序,然后按照数字排序 return result || a.localeCompare(b) } else {
// 数字排序 return Number(a) - Number(b) } }) console.log(ASCarr)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212561.html原文链接:https://javaforall.net
