在最后一篇文章中,我们
介绍了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张飞,他应该是今年的老板!~