js的排序中通常使用到sort函数,可以用冒泡排序,插入排序,快速排序,希尔排序,系统方法等方法,本文结束后分享一个用着排序算法的链接,感兴趣可以了解了解。
1、常见的对一般数组进行排序,代码如下:
1 var a =[ 1,3,123,41,5]; 2 3 //js sort 排序 a-b 从小到大排序, b-a 从大到小排序 4 function sort(){ 5 a.sort(function(a,b){ 6 return a-b; 7 }); 8 }; 9 console.log(a);
2、对特殊数组的排序,代码如下:
1 // 期望结果[张1广州,小张4广州,李2上海,小李3上海,赵5深圳,王7北京] 2 var arr = [ 3 ["张", "1:00", "广州"], 4 ["小张", "4: 00", "广州"], 5 ["王", "7: 00", "北京"], 6 ["李", "2: 00", "上海"], 7 ["小李", "3: 00", "上海"], 8 ["赵", "5: 00", "深圳"] 9 ]; 10 11 var tmp = "广州,上海,深圳,北京"; 12 arr.sort(function(a, b) { 13 var da = new Date("1111/1/1," + a[1].replace(/^\s*|\s*$/g, '') + ":0"); 14 var db = new Date("1111/1/1," + b[1].replace(/^\s*|\s*$/g, '') + ":0"); 15 var pa = tmp.indexOf(a[2]), 16 pb = tmp.indexOf(b[2]); 17 if (pa > pb) { 18 return 1; 19 } else if (pa < pb) { 20 return -1; 21 } else { 22 if (da > db) { 23 return 1; 24 } else if (da < db) { 25 return -1; 26 } else { 27 return 0; 28 } 29 } 30 });
3、对一个数组对象来排序,代码如下:
1 // 按照对象属性来排序 希望返回结果: 2 /* {"name":"aa","age":21,"place":"cplace"}, 3 {"name":"aa","age":21,"place":"eplace"}, 4 {"name":"aa","age":22,"place":"aplace"}, 5 {"name":"aa","age":22,"place":"cplace"}, 6 {"name":"aa","age":22,"place":"dplace"}, 7 {"name":"aa","age":23,"place":"dplace"}, 8 {"name":"bb","age":21,"place":"eplace" }, 9 {"name":"bb","age":22,"place":"vplace" }, 10 {"name":"bb","age":24,"place":"fplace" }, 11 {"name":"cc","age":12,"place":"aplace"}, 12 {"name":"ee","age":29,"place":"fplace"},*/ 13 var myArry = [{"name":"bb","age":22,"place":"vplace" }, 14 {"name":"cc","age":12,"place":"cplace"}, 15 {"name":"aa","age":21,"place":"cplace"}, 16 {"name":"aa","age":23,"place":"dplace"}, 17 {"name":"aa","age":21,"place":"eplace"}, 18 {"name":"aa","age":22,"place":"aplace"}, 19 {"name":"aa","age":22,"place":"cplace"}, 20 {"name":"aa","age":22,"place":"dplace"}, 21 22 {"name":"bb","age":24,"place":"fplace" }, 23 {"name":"ee","age":29,"place":"fplace"}, 24 {"name":"bb","age":21,"place":"eplace" }] 25 myArry.sort(function(a,b){ 26 if(a.name< b.name){ 27 return -1; 28 }else if(a.name > b.name) { 29 return 1; 30 }else { 31 if(a.age< b.age){ 32 return -1; 33 }else if(a.age> b.age){ 34 return 1; 35 }else { 36 if(a.name< b.name){ 37 return -1; 38 }else if(a.age> b.age){ 39 return 1; 40 }else{ 41 return 0; 42 } 43 44 } 45 } 46 })
4、对一个数组对象按照指定顺序排列,代码如下:
1 var myArry = [{"name":"渭南","age":22,"place":"vplace" }, 2 {"name":"商洛","age":12,"place":"cplace"}, 3 {"name":"汉中","age":22,"place":"dplace"}, 4 {"name":"西安","age":23,"place":"dplace"}, 5 {"name":"延安","age":21,"place":"eplace"}, 6 {"name":"榆林","age":22,"place":"aplace"}, 7 {"name":"宝鸡","age":22,"place":"cplace"}, 8 9 {"name":"铜川","age":24,"place":"fplace" }, 10 {"name":"榆林","age":21,"place":"cplace"}]; 11 var temp = "西安,汉中,渭南,商洛,延安,榆林,宝鸡,铜川"; 12 myArry.sort(function(a,b){ 13 var pa = temp.indexOf(a.name); 14 var pb = temp.indexOf(b.name); 15 if(pa< pb){ 16 return -1; 17 }else if(pa > pb) { 18 return 1; 19 }else {return 0; 20 } 21 })
另外分享一个连接:http://www.cnblogs.com/idche/archive/2011/02/16/1956397.html 讲的是冒泡排序,插入排序,快速排序,希尔排序,系统方法等方法进行排序。