在上一篇文章中,我们介绍了JavaScript排序数组排序方法以及对自实现排序方法的总结,并用自己的方法实现了数字数组的排序。
当然,对我来说,在实践中使用排序方法更方便。但是在上一篇博文中,我只实现了数字的排序,而srot方法默认可以对字母进行排序!但是我的代码只能对数字进行排序,看起来还是很弱。
因此,我不得不添加一种可以排列字母甚至中文的排序方法。
实现代码
$ (function () {vararr=['jack ',' book ',' fun ',76,' love ',' mark ',' china ',' China ',' phone ','刘德华'];Console.log('原始数组');console . log(arr);Console.log('用于从小到大的方法排序');console . log(arrsortintomax(arr));Console.log('用于从大到小排序的方法');console . log(arrSortMaxToMin(arr));Console.log('原始数组');console . log(arr);});函数arrMinNum(arr){ var minNum=Infinity,index=-1,minVul=for(var I=0;一、长度;I){ if(type of(arr[I])==' string '){ if(arr[I]。charCodeAt()Minnum){ Minnum=arr[I]。charCodeAt();minVul=arr[I];索引=I;} } else { if(arr[I]minNum){ minNum=arr[I];minVul=arr[I]index=I;}}};返回{ ' minNum ' :minVul,' index ' : index };}函数arrsortintomax(arr){ var arrNew=[];var arrOld=arr . concat();for(var I=0;一、长度;I){ arrnew . push(arrMinNum(arrOld))。minNum);剪接。index,1)};返回(ArrNew);}函数arrMaxNum(arr){ var maxNum=-Infinity,index=-1,maxVul=for(var I=0;一、长度;I){ if(type of(arr[I])==' string '){ if(arr[I]。charCodeAt()MaxNum){ MaxNum=arr[I]。charCodeAt();maxVul=arr[I];索引=I;} } else { if(arr[I]MaxNum){ MaxNum=arr[I];maxVul=arr[I];索引=I;}}};返回{'maxNum':maxVul,' index ' : index };}函数arrSortMaxToMin(arr){ var arrNew=[];var arrOld=arr . slice(0);for(var I=0;一、长度;I){ ArrNew . push(ArrMaxNum(Arrold))。maxNum);arrOld.splice(arrMaxNum(arrOld))。指数,1);};返回(ArrNew);}运行截图如下:
分类原则
如果是数字,则直接是数字进行比较。
如果是字符串,请使用charCodeAt()转换为Unicode进行排序。
Unicode是0-65535之间的整数。
其他说明
按照正常的排序逻辑,的数字比所有的字母都小,字母比所有的中文都小。汉语要按照第一个拼音的首字母排序。
我的代码没有实现,除了字母比全中文小。
逻辑也要实现。分别找出中文中的数字和字母,数字和数组比较,字母和字母比较,中文和中文比较,然后拼接数组。
获取中文的首字母可能有点麻烦。
汉字可以直接比较。
如上图所示,张飞想当老大是有道理的。JavaScript终于在千年之后洗清了张飞的名号,到时候应该是老大了!~