В настоящее время я пытаюсь отсортировать массив объектов в определенном порядке c.
В настоящее время я сортирую его по уровням - что работает нормально, но тогда мне нужно упорядочить его, как показано ниже, где Тип «Concatenator» должен быть только после и перед типом «Clause», как показано ниже:
[
{
"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;
});
}
Я пытался сделать другой вид и искал другие ответы для вдохновения, но мне не удалось привести его в порядок, необходимый для второй половины сортировки.
Есть какие-нибудь предложения о том, как я могу это отсортировать?