日期:2014-05-16  浏览次数:20444 次

Js中sort()方法的用法

关键字: sort, 排序方法

sort(sortfunction)为javascript的数组对象(Array)的一个方法,提供排序功能?
参数 sortFunction 为可选项,是用来确定排序原则的js函数,?
这个函数有两个参数,分别代表每次排序比较时的两个数组项,?
如果这个函数的返回值小于0 则不交换原数组中元素的位置,否则交换原数组中元素的位置。?

如果这个参数被省略, 那么元素将按照 ASCII 字符顺序进行升序排列。?

一、默认按字母排序
Js代码
  1. var?arr?=?['b','cc','abc','fzj','xij','acd','yab'];? ??
  2. arr.sort();? ??
  3. for?(var?i?=?0;?i?<?arr.length;?i++)?{? ??
  4. ????document.writeln(nameArr[i]);? ??
  5. }???
var arr = ['b','cc','abc','fzj','xij','acd','yab']; arr.sort(); for (var i = 0; i < arr.length; i++) { document.writeln(nameArr[i]); }?
结果:abc acd b cc fzj xij yab?

二、数字排序,sort(prama)方法带参数
Js代码 //降序函数??

var?desc?=?function(x,y)?? ??

{?????

????????if?(x?>?y)???????

?????????????? ?return?-1;??//返回一个小于0?的数即可??

????????else?????????

????????????????return?1;??//返回一个大于0?的数即可??

}?? ??

//升序函数??

var?asc?=?function(x,y)?? ??

{?? ??

??????? if?(x?>?y)???????

????????????????return?1;??//返回一个大于0?的数即可??

????????else?????????? ??

??????????????? return?-1;??//返回一个小于0?的数即可??

}???

var?arr2?=?[4,6,4,2,7,9,0,1];?? ??

arr2.sort(desc);?//降序排序??

document.writeln(arr2);?? ??

document.writeln("<br>");?? ??

arr2.sort(asc);?//升序排序??

document.writeln(arr2);???

//降序函数var desc = function(x,y) { if (x > y) return -1; //返回一个小于0 的数即可 else return 1; //返回一个大于0 的数即可} //升序函数var asc = function(x,y) { if (x > y) return 1; //返回一个大于0 的数即可 else return -1; //返回一个小于0 的数即可}var arr2 = [4,6,4,2,7,9,0,1]; arr2.sort(desc); //降序排序document.writeln(arr2); document.writeln("<br>"); arr2.sort(asc); //升序排序document.writeln(arr2);?
结果:?
9,7,6,4,4,2,1,0?
0,1,2,4,4,6,7,9?
?三、复杂对象排序var arr =??[{"ID":"1001","Name":"cxl"},{"ID":"1002","Name":"gyl"},{"ID":"1003","Name":"jxq"}];//按ID排序arr.sort(function(a,b){??????? return a.ID - b.ID;});?//按Name排序(可支持汉字的排序)arr.sort(function(a,b){??????? return a.Name.localeCompare(b.Name);});?