Сравнить строки вида mm:ss.ms в json
Есть объект json и в нем есть строки:
{ "id": "1", "time": "01:44.6" }, { "id": "2", "time": "01:45.9" }, { "id": "3", "time": "00:58.9" }
Где time - это строка вида минуты:секунды.миллисекунды (mm:ss.ms).
Как отсортировать объекты в json по time?
ps.Date.parse() -не работает и (я думаю) это потому , что неверный формат данных , но данные в Json менять нельзя , а преобразовать я не знаю как.
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Может быть, так?
const data = [
{
"id": "1",
"time": "01:44.6"
},
{
"id": "2",
"time": "01:45.9"
},
{
"id": "3",
"time": "00:58.9"
}
];
data.sort(
(a, b) => {
const [mm1, ss1, ms1] = a.time.split(/[:.]/).map(num => Number(num));
const [mm2, ss2, ms2] = b.time.split(/[:.]/).map(num => Number(num));
return mm1 - mm2 || ss1 - ss2 || ms1 - ms2;
}
);
console.log(data);