对象数组通过对象的属性进行排序

最常见的对数组进行排序,可以用sort()方法,按照数组中元素的首字母或者数字大小进行排序

var arr = [2,5,13,7,4,9,1];
var arr1 = arr.sort();
console.log(arr);  // [1, 13, 2, 4, 5, 7, 9]
console.log(arr1);   // [1, 13, 2, 4, 5, 7, 9]

sort()方法会改变原来的数组,并且sort方法并不是严格按照数字大小排序的。
如果想对数组按照大小进行排序,则需要在sort()方法添加比较函数

var arr = [2,5,13,7,4,9,1];
arr.sort(function(a,b){
    return a-b;    // -1 升序排列 
})
console.log(arr);   // [1, 2, 4, 5, 7, 9, 13]

比较函数compare返回值特点:
若a小于b,在排序后的数组中a应该出现在b之前(即升序排列),则返回小于0的值
若a等于b,则返回0
若a大于b,则返回一个大于0的值

那么可不可以利用sort方法对对象数组按照对象属性进行排序呢?

答案是可以的
像上面对数组按照大小排序,指定比较函数一样,只是此时比较的是对象的属性
上代码:对下列对象数组,按照age排序

var infoObj=[
            {
                name:"张三",
                sex:'female',
                age:30
            },
            {
                name:"李四",
                sex:'male',
                age:20
            },
            {
                name:"王五",
                sex:'female',
                age:40
            }
        ];
        // 指定排序的比较函数
    function compare(property){
         return function(obj1,obj2){
             var value1 = obj1[property];
             var value2 = obj2[property];
             return value1 - value2;     // 升序
         }
    }
    var sortObj = infoObj.sort(compare("age"));
    console.log(sortObj); // 

最后打印出来的结果如下所示:

[
    {
        name:"李四",
        sex:'male',
        age:20
    },
    {
        name:"张三",
        sex:'female',
        age:30
    },
    {
        name:"王五",
        sex:'female',
        age:40
    }
];

这样就完成了对象数组按照对象属性排序啦!! !

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值