首页 新闻 搜索 专区 学院

一个JSON数组排序

0
悬赏园豆:20 [已解决问题] 解决于 2019-01-09 14:52

如图,JSON数组包含多个对象

要按对象的Levelcode属性排序,LevelCode的数字小的排名靠前
如果LevelCode相同,需要看OK_ID属性,OK_ID不空的排名靠前
排序结果的类型仍为JSON数组

寻找薛定谔的猫的主页 寻找薛定谔的猫 | 初学一级 | 园豆:83
提问于:2019-01-09 11:50
< >
分享
最佳答案
0

function sortObj(l, n) {
let res = l.Levelcode - n.Levelcode;
if (!res) {
res = l.OK_ID ? 1 : -1
}
return res;
}
ArrObj.sort(sortObj)

收获园豆:20
不邪 | 菜鸟二级 |园豆:222 | 2019-01-09 12:32

谢谢!
将res = l.OK_ID ? 1 : -1 改为 res = l.OK_ID ? -1 :1后是对的

我查了一下ES6的sort方法,参数是一个匿名函数
let res = l.Levelcode - n.Levelcode; //默认按Levelcode升序
if (!res) { //!res指的是res<=0,等于0的时候顺序不变,也就是说Levelcode相同的时候
res = l.OK_ID ? -1 : 1 //这句怎么理解? 按OK_ID先空后有值的顺序,直接写成 if(l.OK_ID) res = -1; 不就可以了吗?
}

理解的可能不对,请指点

寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-01-09 14:12

@寻找薛定谔的猫: 嗯嗯 可以的

不邪 | 园豆:222 (菜鸟二级) | 2019-01-09 14:16

@不邪: 再次感谢!

寻找薛定谔的猫 | 园豆:83 (初学一级) | 2019-01-09 14:52
其他回答(1)
0
青青子衿619 | 园豆:300 (菜鸟二级) | 2019-01-09 13:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册