发布时间:2021-06-06编辑:佚名阅读(2752)
有个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 对象数组 Array object key 排序 sort
0人
0人
0人
0人