前言
在开发过程中有时需要前端对后端传来的对象列表数据根按某项元素值进行排序以实现一些业务。
自定义方法
下面是一个可以满足该需求的高阶函数,attr为数组排序是依据对象的哪一个属性,rev为升序还是降序,默认为升序,true表示升序,false表示降序。
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;
}
}
方法的使用
let arr=[{
id:3,
name:'张三'
},{
id:1,
name:'李四'
},{
id:6,
name:'王五'
},{
id:4,
name:'李四'
}]
console.log(arr.sort(sortBy("id",false)))
//[{id:1,name:'李四'},
//id:3,name:'张三'},
//{id:4,name:'李四'},
//{id:6,name:'王五'}]
建议将该方法直接复制到util文件夹中。