//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)
solt排序整理
最新推荐文章于 2023-07-12 23:48:53 发布
本文详细介绍了JavaScript中数组的排序方法,包括数字从小到大和从大到小排序,英文字母排序,汉字排序,以及汉字、字母、数字混合字符串的复杂排序。通过示例代码展示了如何实现这些排序,并提供了辅助函数用于判断字符串是否全为中文。这些排序算法对于处理混合数据类型的数组非常实用。
摘要由CSDN通过智能技术生成