Сравнить строки вида 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);

→ Ссылка