js 数组中的对象元素根据某一属性值进行排序(sort)

6,828 阅读1分钟
var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];

数组中对象作为数组元素,要根据对象属性的值对数组元素进行排序。

根据age属性将数组元素进行升序排序:

arr.sort((a,b)=>{
    //return( a[age] - b[age])
    return( a.age - b.age)
})
//[{ name: "zopp", age: 0 },{ name: "yjj", age: 8 },{ name: "gpp", age: 18 }]

将对象属性和升序降序作为参数,可以方便的改变数组的排序方式。

//attr为数组排序是依据对象的哪一个属性
//rev为升序还是降序,默认为升序,true表示升序,法拉色表示降序
function sortBy(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;
            }
            if(a > b){
                return rev * 1;
            }
            return 0;
        }
    }
arr.sort(sortBy("name",false))
//按name进行降序排序

sort