У меня есть такой массив:
const test = [
{
label: "C",
options: [
{ label: "C"},
{ label: "B"}
]
},
{
label: "A",
options: [
{ label: "Z"},
{ label: "Y"}
]
},
{
label: "B",
options: [
{ label: "J"},
{ label: "H"}
]
},
{
label: "D",
options: [
{ label: "T"},
{ label: "B"}
]
}
]
Мне нужно отсортировать этот массив в алфавитном порядке двумя способами:
1) По первой метке (вне массив опций)
2) И опции по метке
Пока мне удалось отсортировать только по первой метке, используя этот пример:
function compareStrings(a, b) {
a = a.toLowerCase();
b = b.toLowerCase();
return (a < b) ? -1 : (a > b) ? 1 : 0;
}
test.sort(function (a, b) {
return compareStrings(a.label, b.label)
})
Как можно также заказать опции внутри?
Ожидаемый выходной массив будет:
const test_SORTED = [
{
label: "A",
options: [
{ label: "B"},
{ label: "C"}
]
},
{
label: "B",
options: [
{ label: "Y"},
{ label: "Z"}
]
},
{
label: "C",
options: [
{ label: "H"},
{ label: "J"}
]
},
{
label: "D",
options: [
{ label: "B"},
{ label: "T"}
]
}
]