solt排序整理

solt排序整理1 对数字的排序 letarr 25 33 3 6 9 7 8 1 2 5 11 18 599 43 从小到大排序 arr arr sort a b gt returna b 从大到小排序 arr arr sort a b gt returnb a 2 对英文字母排序 letarr abc bcd aedc bdcs qsedd sasdf yrdsx arr sort a b gt

//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

(0)
上一篇 2026年3月18日 下午7:46
下一篇 2026年3月18日 下午7:46


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号