我目前正在尝试将一组对象排序为特定顺序。
我目前按级别对其进行排序-效果很好,但是我需要按如下所示对其进行排序,其中“连接器”类型必须只能出现在“子句”类型之后和之前,如下所示:
[
{
"type": "Clause",
"level": 1
},
{
"type": "Concatenator",
"level": 1
},
{
"type": "Clause",
"level": 2
},
{
"type": "Concatenator",
"level": 2
},
{
"type": "Clause",
"level": 2
},
{
"type": "Concatenator",
"level": 3
},
{
"type": "Clause",
"level": 3
},
{
"type": "Concatenator",
"level": 3
},
{
"type": "Clause",
"level": 3
},
{
"type": "Concatenator",
"level": 4
},
{
"type": "Clause",
"level": 4
},
{
"type": "Concatenator",
"level": 4
},
{
"type": "Clause",
"level": 4
}
]
下面是我目前拥有的代码,它目前仅按级别排序,并尝试按我想要的方式对其进行排序:
conditionsArr = [{
"type": "Concatenator",
"level": 3
},
{
"type": "Clause",
"level": 4
},
{
"type": "Clause",
"level": 1
},
{
"type": "Concatenator",
"level": 1
},
{
"type": "Clause",
"level": 3
},
{
"type": "Clause",
"level": 4
},
{
"type": "Clause",
"level": 3
},
{
"type": "Concatenator",
"level": 4
},
{
"type": "Clause",
"level": 2
},
{
"type": "Concatenator",
"level": 2
},
{
"type": "Concatenator",
"level": 3
},
{
"type": "Clause",
"level": 2
},
{
"type": "Concatenator",
"level": 4
}
]
function sortByLevel(conditionsArr) {
return conditionsArr.sort(function(a, b) {
return a.level - b.level;
}).sort(function(a, b) {
if (a.type === b.type)
return -1;
return 0;
});
}
我尝试过另一种排序,并查看了其他答案以获取灵感,但我无法将其按排序后半部分所需的顺序排列。
关于如何对它进行排序有什么建议吗?
守着一只汪
相关分类