js 根据对象数组中的属性进行排序

如图,已经选择的排列到前面来。

《js 根据对象数组中的属性进行排序》


有一个数组arr=[],
数组里面是对象:


{height: 20 lenth: 30 menuId: 4 nums: 3 unitPrice: 2}, {height: 20 lenth: 30 menuId: 4 nums: 5 unitPrice: 2}, {height: 20 lenth: 30 menuId: 4 nums: 1 unitPrice: 2},

现在根据数组里面的对象属性nums进行排序。

方法一

var arr = [
 {height: 20
lenth: 30
menuId: 4
nums: 3
unitPrice: 2},
    {height: 20
lenth: 30
menuId: 4
nums: 5
unitPrice: 2},

{height: 20
lenth: 30
menuId: 4
nums: 1
unitPrice: 2},
];
 arr.sort((a,b)=>{
  return a.nums - b.nums
 });

方法二

定义一个排序的函数,

function compare(property){
  return function(a,b){
    var value1 = a[property];
    var value2 = b[property];
    return value1 - value2;
  }
}

console.log(arr.sort(compare('nums')))
点赞
  1. 全ZS最快的男人说道:

    var arr = [
    {name:'a',age:9},
    {name:'b',age:12},
    {name:'c',age:8}
    ];

    arr.sort((a,b)=>{
    return a.age - b.age
    });

    * 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
    * @param attr 排序的属性 如number属性
    * @param rev true表示升序排列,false降序排序
    * */
    sortBy: function(attr,rev){
    //第二个参数没有传递 默认升序排列
    if(rev == undefined){
    rev = 1;
    }else{
    rev = (rev) ? 1 : -1;
    }

    return function(a,b){
    a = a[attr];
    b = b[attr];
    if(a b){
    return rev * 1;
    }
    return 0;
    }
    }

    arr.sort((a,b)=>{
    return a.age - b.age
    });

    复制代码请点此 :shit:

    1. luo16616说道:

      傻瓜哈哈哈哈 :biggrin: :biggrin: :biggrin: :biggrin: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :arrow: :arrow: :arrow:

发表评论

电子邮件地址不会被公开。 必填项已用*标注