美文网首页
JavaScript 数组排序之 reverse() 、sort

JavaScript 数组排序之 reverse() 、sort

作者: 木子方是个小太阳 | 来源:发表于2019-04-04 17:24 被阅读0次

    在js中有两个常用的方法对数组顺序进行调整,reverse()和sort();
    其中reverse()就是对数组进行反转,颠倒原来的顺序。
    eg:

    var nameArr = ['Tom','Jim','Ada','Leanna'];
    nameArr.reverse() ==>['Leanna','Ada','Jim','Tom']
    

    主要来说一下sort()方法;

    定义:

    对数组的元素进行排序.

    语法:

    arrayObject.sort(sortby) sortby可不选,规定数组排序规则,必须为函数

    返回值:

    对数组的引用,数组只是在原数组上进行排序,不生成副本。

    说明:

    如果数组在调用方法的时候没有传参数,则只是按照首字母顺序对数组元素进行排序,或者更精确的说是按照字符编码顺序进行排序,可是这样一般不适用日常操作,所以要传比较函数来规定排序。

    比较函数具有两个参数a、b,要比较两个值,然后返回一个说明两个值相对顺序的数字,返回数字如下:

    a < b:在排序后的数组中,a应该在b之前。 ( 数组将按照升序进行排序 )
    a = b:返回0
    a > b:返回一个大于0的值 (数组将按照降序进行排序 )

    下面来一起看几个sort()排序的例子

    例一:sort() 无回调用法

    console.log(numArr.sort())==>[12,224,27,33,52]  
    

    很显然这不是我们想要的结果。

    例二:sort() 传参规定排序

    var numArr = [12,52,33,224,27]
    function numOrderAsce(a,b){
        return a-b;
    }
    function numOrderDesc(a,b){
        return b-a;
    }
    console.log(numArr.sort(numOrderAsce))==>[12, 27, 33, 52, 224]
    console.log(numArr.sort(numOrderDesc))==>[224, 52, 33, 27, 12]
    
    

    例三:sort() 对对象数组进行排序

    var objarr = [
                    {
                        name:'张三',
                        age:10,
                        year:23
                    },
                    {
                        name:'李四',
                        age:8,
                        year:56
                    },
                    {
                        name:'王二',
                        age:52,
                        year:12
                    },
                   
                    {
                        name:'周八',
                        age:52,
                        year:91
                    }
                ];
        function objArrOrder(type1,type2){
            return function(a,b){
                return a[type1]-b[type1]
                     
            }
        } 
        console.log(objarr.sort(objArrOrder('age','year')))
    
    
    

    例四:sort() 对对象数组进行排序(多个条件)

    var objarr = [
                    {
                        name:'张三',
                        age:10,
                        year:23
                    },
                    {
                        name:'李四',
                        age:8,
                        year:56
                    },
                    {
                        name:'王二',
                        age:52,
                        year:12
                    },
                   
                    {
                        name:'周八',
                        age:52,
                        year:91
                    }
                ];
        function objArrOrder(type1,type2){
            return function(a,b){
                if(a[type1]!=b[type1]){
                    return a[type1]-b[type1]
                    }else{
                       return b[type2]-a[type2] 
                    }
                
            }
        } 
        console.log(objarr.sort(objArrOrder('age','year')))
    

    其他更多的方法,就看在比较函数里怎么处理,根据实际需求完成。

    相关文章

      网友评论

          本文标题:JavaScript 数组排序之 reverse() 、sort

          本文链接:https://www.haomeiwen.com/subject/gneqiqtx.html