语法:arrayObject.sort(sortby);
参数sortby可选,用来规定排序规则,类型为函数。
number 类型排序:
var arr = [3,6,9,11,2,4,7,1,20];
document.write(arr.sort() +"<br>");
// 这样对于 number类型 无效--- 页面效果: 1,11,2,20,3,4,6,7,9
// 解决方法 一 匿名函数
document.write(arr.sort(function(a,b){
// 倒序输出 正序改为 a-b
return b-a;
})+"");
// 页面效果: 20,11,9,7,6,4,3,2,1
// 解决方法二 比较函数调用
document.write(arr.sort(compare)+"<br>");
function compare (a,b){
// 倒序 正序 a-b
return b-a;
};
// 页面效果: 20,11,9,7,6,4,3,2,1
字符类型----英文排序
// 先展示无效方法
var arrSimple2=new Array("cew","mew","awe","bwe","ma");
// 该排序对 字符 数组无效, 在js中 b-a 需要满足 两者为 number 类型
arrSimple2.sort(function(a,b){
return b-a;
});
// 页面效果:cew,mew,awe,bwe,ma
// 有效方法
//升序排序 有效
document.write(arrSimple2.sort() +"<br>");
//升序排列后 调用 reverse() 倒置元素顺序
document.write(arrSimple2.sort().reverse() +"<br>");
// 页面效果:awe,bwe,cew,ma,mew
// mew,ma,cew,bwe,awe
字符类型----汉字排序
// 直接使用sort() 发现对于 汉字 无效
var arr2 = ["刘二","大云","赵六","张三","王五","李明","二云"];
document.write(arr2.sort()+"<br>");
// 页面效果: 二云,刘二,大云,张三,李明,王五,赵六
// 改用类似 number 类型的比较方法 有效 内部使用 js localeCompare()比较函数
document.write(arr2.sort(function(a,b){
// 正序输出 逆序 b.localeCompare(a) 即可
return a.localeCompare(b);
})+"<br>");
// 页面效果: 大云,二云,李明,刘二,王五,张三,赵六
混合排序
//英文, 汉字 ,数字 的 混合排序示例如下,还没有完全理解
//从页面反馈来看,三个层次 内部排序 按照 字符串的 排序 规则来看 是 OK 的
var arr3=new Array("3","21212","1","逼格","11","啊玉","abc","大哥","阿门","ded","大山","ddd","cew","mew","awe","bwe","ma");
document.write(arr3.sort(function(a,b){
return a.localeCompare(b);
})+"<br>");
//页面效果 :1,11,21212,3,阿门,啊玉,逼格,大哥,大山,abc,awe,bwe,cew,ddd,ded,ma,mew