排序中我们经常会用sort这个高阶函数,我们今天就来讲讲这个sort的比较机制,对于数字来说我们只需要比较他们的大小就可以了
但是
var arr =[15,81,9,4,3]; alert(arr.sort()); // 最后的结果是 15 3 4 81 9
结果和我们想的不太一样,说明这个函数的内部不仅仅是比较数字大小那么简单
在看一个
var arr =['Apple','software','Tencent','alibaba'];alert(arr.sort()); //最后的结果是 Apple Tencent alibaba software
同样是a开头但是结果一个在前,一个在后
或许你已经知道了,但是为了说明问题我们在看一个
var arr =['Apple','software','Tencent','123','89'];alert(arr.sort());//123 89 Apple software Tencent
最后一句话,其实是 因为字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后,对于数字呢 先把他转化为String类型 比较1 的ASCII码小于8,所以123 “小于” 89
现在我们来重写sort方法
var arr =[22,9,59,123,89]; arr.sort( function (x,y){ if(x>y) return 1; else if(y
对于数字,我们直接对它们比较
var arr =['Apple','software','Tencent','alibaba'];arr.sort( function (x,y){ s1 = x.toUpperCase(); s2 = y.toUpperCase(); if(s1>s2) return 1; else if(s1
对于字符串忽略他们大小写进行比较,对字符首字母的ASII码进行比较,如果首字母相同,比较第二个,一直到该字符串末尾