У меня есть массив таких объектов
[
{
"contact_id":"ee76f661-91ff-5e6b-b900-79612065a840",
"contact_name":"Bcd",
"favorite":false,
},
{
"contact_id":"da34621a-1355-5b6b-8ef5-e3bb60b2c28c",
"contact_name":"Def",
"favorite":true,
},
{
"contact_id":"0900bd96-319b-577b-8d01-975347667108",
"contact_name":"Abcd",
"favorite":false,
},
{
"contact_id":"0900bd96-319b-577b-8d01-975347667108",
"contact_name":"Abcde",
"favorite":true,
}
]
Я хочу отсортировать объекты в алфавитном порядке в соответствии с contact_name
, и те, у которых favorite
как истина, также должны появиться в начале. Итак, в этом случае отсортированный массив должен выглядеть следующим образом:
[
{
"contact_id":"0900bd96-319b-577b-8d01-975347667108",
"contact_name":"Abcde",
"favorite":true,
},
{
"contact_id":"da34621a-1355-5b6b-8ef5-e3bb60b2c28c",
"contact_name":"Def",
"favorite":true,
},
{
"contact_id":"0900bd96-319b-577b-8d01-975347667108",
"contact_name":"Abcd",
"favorite":false,
},
{
"contact_id":"ee76f661-91ff-5e6b-b900-79612065a840",
"contact_name":"Bcd",
"favorite":false,
},
]
Прямо сейчас это код, который я использую для сортировки, который не дает мне требуемого результата, поскольку я думаю, что это метод неправильный
sortContacts(contacts) {
contacts.sort((a, b) {
return a['contact_name']
.toString()
.toLowerCase()
.compareTo(b['contact_name'].toString().toLowerCase());
});
contacts.sort((a, b) {
bool favorite1 = a['favorite'];
bool favorite2 = b['favorite'];
return (favorite1 == favorite2) ? 0 : favorite1 ? -1 : 1;
});
return contacts;
}
Я как бы застрял на этом, любая помощь будет отличной! Спасибо за уделенное время!