1. 程式人生 > 其它 >js sort根據陣列中物件的某個屬性值進行排序

js sort根據陣列中物件的某個屬性值進行排序

sort⽅法接收⼀個函式作為引數,這⾥巢狀⼀層函式⽤來接收物件屬性名,其他部分程式碼與正常使⽤sort⽅法相同.
var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];
function compare(property){
    return function(a,b){
        var value1 = a[property];
        var value2 = b[property];
        return value1 - value2;
    }
}
console.log(arr.sort(compare(
'age'))) // or 直接寫是一樣的 arr.sort((a,b)=>{ return a.age - b.age // 從小到大排序 b.age - a.age 從大到小排序 }); console.log(arr.sort(compare('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; }
if(a > b){ return rev * 1; } return 0; } }