NodeJS对象数组Array根据对象object key的值排序sort

发布时间:2021-06-06编辑:佚名阅读(2365)

有个js对象数组 var ary=[{id:1,name:"c"},{id:3,name:"a"},{id:2,name:"d"},{id:4,name:"b"}];需求是根据name或者id的值来排序,这里有个风骚的函数。

/**
 * 对数组中的对象,按对象的key进行sortType排序
 * @param key 数组中的对象为object,按object中的key进行排序
 * @param sortType true为降序;false为升序
 */
function keySort(key,sortType) {
    return function(a,b){
        if (typeof a[key]==='number' && typeof b[key]==='number')
        {
            return sortType ? (b[key]-a[key]) : (a[key]-b[key]);
        }
        else if (typeof a[key]==='string' && typeof b[key]==='string')
        {
            let x = a[key].toLowerCase();
            let y = b[key].toLowerCase();
            if (x < y) {return sortType ?1:-1;}
            if (x > y) {return sortType ?-1:1;}
            return 0;
        }
        else
        {
            return 0;
        }
    }
}

使用方法:

var ary=[{id:1,name:"c"},{id:3,name:"a"},{id:2,name:"d"},{id:4,name:"b"}];
console.log(ary.sort(keySort('name',true)));
console.log(ary.sort(keySort('name',false)));
console.log(ary.sort(keySort('id',true)));
console.log(ary.sort(keySort('id',false)));


  关键字:NodeJS对象数组Arrayobject key排序sort


鼓掌

0

正能量

0

0

呵呵

0


评论区