Сортировка массива строк в js
Вообщем у меня есть проект на vue и там перед выводом массива с временными зонами я его сортирую. Массив выглядит примерно так:
arrTimeZone:Array[415] {
0:Object {
text:"(+00:00) Абиджане, Кот-д'Ивуар"
value:"Africa/Abidjan"
},
1:Object {
text:"(+00:00) Аккра, Гана"
value:"Africa/Accra"
},
...
Вообщем как видно из разпечатки их там 415, грубо говоря все зоны которые указаны в php. Вообщем после сортировки массив выглядит так, сначало идут все +0, потом +1, ..., +12 и после всего этого уже идёт -0, -1 и т.д.
Сортирую я вот так:
timeZoneSort.sort(function (a, b) {
if (a.text > b.text) {
return 1
}
if (a.text < b.text) {
return -1
}
return 0
});
Обычная сортировка по возрастанию. Вопрос как заставить минусы идти впереди?? Чтобы массив начинался с -12, и заканчивался + 12
Ответы (1 шт):
Автор решения: Hat
→ Ссылка
Наверное, можно много чего тут сделать, но я бы привела это к числу.
timeZoneSort.sort(function (a, b) {
let a_num = a.text.slice(1, 7)
a_num = a_num.replace(':', '.')
let p = a_num[0] == '+' ? 1 : 0
a_num = Number(a_num) + p
let b_num = b.text.slice(1, 7)
b_num = b_num.replace(':', '.')
p = b_num[0] == '+' ? 1 : 0
b_num = Number(b_num) + p
if (a_num > b_num) {
return 1
}
if (a_num < b_num) {
return -1
}
return 0
});
Примерно так. Я не тестировала, возможны опечатки