JS sort()排序及JS sort()双重排序

sort()方法用于对数组的排序,并返回数组。基本用法为:arr.sort();默认为升序排列。
例:
var arr = [5,3,1,6,4,3,2];
arr.sort(); // [1, 2, 3, 3, 4, 5, 6]
如果想按照其他标准进行排序,sort()方法是可以传入一个函数,函数通过返回一个值来决定
这两个值需不需要交换位置。

例:

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

如果a-b > 0,则a和b交换位置。当然这样写出来的话是升序排列。如果要降序排则把a-b改成b-a就

可以实现,就是说b大于a,则b和a交换位置,把大的值排前面。a,b的值就是从arr[0],arr[1]开始比较的,

类似冒泡排序。

当然以上方法是对number数组排序的,如果是string的话则不能用 a-b ,应当如下:
var arr = ["A","cds","esadf","As"];
arr.sort(function(a,b){
    if(a > b){
        return 1;
    }
}); // ["A", "As", "cds", "esadf"]
当然我们也可以用sort()去给json对象数组排序,甚至双重、多重排序。如下例子,我们按学生的
总分排序,如果总分相等,我们再按照语文成绩排序。
var jsonStudents = [
    {name:"Dawson", totalScore:"197", Chinese:"100",math:"97"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"97"},
    {name:"LiLei", totalScore:"185", Chinese:"88", math:"97"},
    {name:"XiaoMing", totalScore:"196", Chinese:"96",math:"100"},
    {name:"Jim", totalScore:"196", Chinese:"98",math:"98"},
    {name:"Joy", totalScore:"198", Chinese:"99",math:"99"}];
jsonStudents.sort(function(a,b){
    var value1 = a.totalScore,
        value2 = b.totalScore;
    if(value1 === value2){
        return b.Chinese - a.Chinese;
    }
    return value2 - value1;
});
输出:
  1. 0:{name"Joy"totalScore"198"Chinese"99"math"99"}
  2. 1:{name"Dawson"totalScore"197"Chinese"100"math"97"}
  3. 2:{name"HanMeiMei"totalScore"196"Chinese"99"math"97"}
  4. 3:{name"Jim"totalScore"196"Chinese"98"math"98"}
  5. 4:{name"XiaoMing"totalScore"196"Chinese"96"math"100"}
  6. 5:{name"LiLei"totalScore"185"Chinese"88"math"97"}
当然,如果需要多重排序,只需要在sort传入的函数里在加判断就可以了,这里就不过多赘述。


  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值