基于js的数字+字母+汉语混合排序方法

基于js的数字+字母+汉语混合排序方法
在最后一篇文章中,我们介绍了javascript排序数组的排序方法和自实现排序方法。

当然,在实践中,我会用更方便的排序方法。然而,我的最后一篇博客,只有实现数字排序,和默认的srot方法实现字母的排序哦!而我的代码只能对看起来仍然很弱的数字排序。

所以,我必须添加一种按字母排序,甚至是中文排序。

实现代码
$(函数(){())
var arr = {杰克
console.log('original数组);
console.log(ARR);
console.log(小法大订单);
console.log(arrsortmintomax(ARR));
console.log(the'for方法进行排序,从大到小);
console.log(arrsortmaxtomin(ARR));
console.log('original数组);
console.log(ARR);
});
功能arrminnum(ARR){
无功minnum =无穷大,指数为1,minvul = ;
对于(var i = 0;i < arr.length;i++){
如果(typeof(ARR {我})=字符串){
如果(ARR {我}。charcodeat()< minnum){
minnum = ARR {我}。charcodeat();
minvul = ARR {我};
索引= i;
}
{ }人
如果(ARR {我} < minnum){
minnum = ARR {我};
minvul = ARR {我}
索引= i;
}
}
};
返回{minnum ):minvul,指数:指数};
}
功能arrsortmintomax(ARR){
无功arrnew = { };
VaR阿罗尔德= arr.concat();
对于(var i = 0;i < arr.length;i++){
(arrminnum(阿罗尔德)ArrNew.push。MinNum);
(arrminnum(阿罗尔德arrold.splice)。指数,1)
};
返回(arrnew);
}
功能arrmaxnum(ARR){
无功maxnum =无穷,指数为1,maxvul = ;
对于(var i = 0;i < arr.length;i++){
如果(typeof(ARR {我})=字符串){
如果(ARR {我}。charcodeat()> maxnum){
maxnum = ARR {我}。charcodeat();
maxvul = ARR {我};
索引= i;
}
{ }人
如果(ARR {我} > maxnum){
maxnum = ARR {我};
maxvul = ARR {我};
索引= i;
}
}
};
返回{maxnum ):maxvul,指数:指数};
}
功能arrsortmaxtomin(ARR){
无功arrnew = { };
VaR阿罗尔德= arr.slice(0);
对于(var i = 0;i < arr.length;i++){
(arrmaxnum(阿罗尔德)ArrNew.push。MaxNum);
(arrmaxnum(阿罗尔德arrold.splice)。指数,1);
};
返回(arrnew);
}
运行截图如下:
排序原则

如果它是一个数字,它直接与数字相比较。

如果它是一个字符串,该charcodeat()转换成Unicode编码排序。

Unicode是0到65535之间的整数

其他说明

按照正常的排序逻辑,应该是:数字比所有字母都小,字母比所有的中文都小,汉语应该根据第一个单词的第一个字母排序。
除了我的代码比所有的中文都小之外,其余的代码都没有实现。
逻辑也应该实现。找出汉语中的数字和字母,比较数字和数组,比较字母和字母,比较中文和中文,然后拼接数组。
汉语第一个单词的第一个字母可能有点麻烦。
汉字可以直接比较。
如上图所示,张飞的愿望是一个老板,是一千年后的reasonable.javascript张飞,他应该是今年的老板!~
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部