数组排序

Posted 王振宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组排序相关的知识,希望对你有一定的参考价值。

1.利用es6  sort 方法

function sort1(arr){
    arr.sort(function(a,b){
        return a-b
    });
    return arr;
};

如果想要降序排列,改为 return b-a 

2.利用中间值,切换两个值的位置

function sort2(arr){
    var i = 0, len = arr.length, j, d; for(; i<len; i++){ 
        for(j=0; j<len; j++){ 
            if(arr[i] < arr[j]){ 
                d = arr[j]; arr[j] = arr[i]; arr[i] = d; 
            } 
        } 
    }
    return arr;
};

3.针对元素为对象的数组排序,依然利用 sort 方法,但是需要写一个方法控制排序字段

var arr=[
    {name:"George", age:5, retiredate:"2018.01.02"},
    {name:"Edward", age:25, retiredate:"2017.01.02"},
    {name:"Christine", age:58, retiredate:"2018.03.02"},
    {name:"Sarah", age:62, retiredate:"2016.06.02"}
];
var by = function(name){
 return function(o, p){
   var a, b;
   if (typeof o === "object" && typeof p === "object" && o && p) {
     a = o[name];
     b = p[name];
     if (a === b) {
       return 0;
     }
     if (typeof a === typeof b) {
       return a < b ? -1 : 1;
     }
     return typeof a < typeof b ? -1 : 1;
   }
   else {
     throw ("error");
   }
 }
};
arr.sort(by("age"));
console.log(arr);

以上就是今天总结的数组排序的三个方法,如有表述不准确之处,欢迎指正,欢迎补充,感谢阅读。

 

以上是关于数组排序的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的时间复杂度是多少?

快速排序-递归实现

对数组中的字符串进行排序,使其稀疏

算法排序之堆排序

在第6731次释放指针后双重免费或损坏

VSCode自定义代码片段—— 数组的响应式方法