js中数组Array对象的方法sort()的应用

一、 sort()方法的介绍  

 //给一组数据排序
    var arrNum = [12,1,9,23,56,100,88,66];
    console.log("排序前的数组:"+arrNum);
    arrNum.sort();//默认按照字母排序
    console.log("排序后的数组:"+arrNum);

    //对数组进行升序排列,将函数作为参数传入
    arrNum.sort(function (a,b) {
        return a-b;//数组中两两比较,结果为正(a>b),则互换位置,小的在前面(从索引0开始,分别和后面元素比较)
    });
    console.log("升序排序后的数组:"+arrNum);

    //对数组进行降序排列,将函数作为参数传入
    arrNum.sort(function (a,b) {
        return b-a;//数组中两两比较,结果为正,则互换位置,大的在前面
    });
    console.log("降序排序后的数组:"+arrNum);


二、 sort()方法的高级应用(按照对象数组中对象的属性进行排序)
  function Student(name,age,score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    var stu1 = new Student("寒殇凌雪",23,100);
    var stu2 = new Student("花木扶疏",25,97);
    var stu3 = new Student("北城以北",20,95);
    var stu4 = new Student("南柯一梦",24,99);
    var stu5 = new Student("水墨淡彩",22,95);

    var arr = [];
    arr.push(stu1,stu2,stu3,stu4,stu5);
    console.log("排序前输出每一个索引对应的值如下:")
    for(i in arr){
        console.log(arr[i]);
    }

    // arr.sort(upSort("score"));
    arr.sort(upSort("score","age"));
    console.log("升序排列后输出每一个索引对应的值如下:")
    for(i in arr){
        console.log(arr[i]);
    }

    //arr.sort(lowSort("score"));
    arr.sort(lowSort("score","age"));
    console.log("降序排列后输出每一个索引对应的值如下:")
    for(i in arr){
        console.log(arr[i]);
    }


/*    //升序排列
    function upSort(property) {//指定某个属性的排序
        return function (a,b) {
            return a[property] - b[property];
        }
    }*/


    function upSort(score,age) {//指定某个属性的排序
        return function (a,b) {
            if(a.score == b.score){//当分数相等,按照年龄排序
                return a.age - b.age;
            }
            return a.score - b.score;
        }
    }


    //降序排列
/*    function lowSort(property) {//指定某个属性的排序
        return function (a,b) {
            return b[property] - a[property];
        }
    }*/

     function lowSort(score,age) {//指定某个属性的排序
         return function (a,b) {
             if(a.score == b.score){//当分数相等,按照年龄排序
                 return b.age - a.age;
             }
             return b.score - a.score;
         }
        }



    /*var arr1 = [12,8,45,10];
    arr1.sort(function (a,b) {
        return a-b;//升序
    });
    console.log(arr1);

    arr1.sort(function (b,a) {
        return a-b;//升序
    });
    console.log(arr1)*/

 


 

 

转载于:https://www.cnblogs.com/menglong1214/p/9543762.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值