在做项目过程中碰到一个问题,就是前端需要对json数据按照某种规则进行排序,这时候就难倒我了,说实话,我对前端不太熟,但是也是深深的学习了一下
这个排序我在java的集合对象排序中见过,所以在js中就比较快了
var result=[
{id:"PJY2020006",name:'VAT-C-1'},
{id:"PJY2020004",name:'VAT-S-2'},
{id:"PJY2020003",name:'VAT-S-3'},
{id:"PJY2020005",name:'VAT-C-4'}]
function sortAA(a,b){
if(a.name.substring(0,5)==b.name.substring(0,5)){
if(a.id<b.id){
return -1;
}else if(a.id>b.id){
return 1;
}else{
return 0;
}
}else{
if(a.name.substring(0,5)<b.name.substring(0,5)){
return -1;
}else{
return 1;
}
}
}
console.log(result.sort(sortAA))
我们应该怎么理解呢?这次我也是看了文档深深的记住了
下面这个图是java的,但是原理是一样的
如果你写了下面这个逻辑,如果是小于返回-1,表示正序,如果你返回正数,表示反序;或者是比较的对象调换顺序然后
if(a.id<b.id){
return -1;
}
当然我们也可以使用js的lambda表达式来写
一句话搞定,香
console.log(result.sort((a,b)=>(a.name.substring(0,5)==b.name.substring(0,5))?(a.id==b.id?0:(a.id>b.id?1:-1)):((a.name.substring(0,5)>b.name.substring(0,5))?1:-1)))