Javascript - сортировка массива по дате и по алфавиту одновременно

У меня есть массив с объектами, содержащими заголовки и даты.

[{
   title: 'Some title'
   date: '12.00 PM 17/10/2014'
},
...
]

Мне нужно одновременно отсортировать эти значения по дате и в алфавитном порядке, результат должен выглядеть следующим образом:

1.00 PM - Btitle
1.00 PM - Bztitle
1.00 PM - Ctitle
3.00 PM - Atitle
3.00 PM - Btitle

Должен ли я создавать дополнительные массивы для запоминания состояния и т. д.? Или, может быть, это можно сделать в рамках одного метода sort.


person Kosmetika    schedule 17.10.2014    source источник
comment
у вас есть доступ к moment.js?   -  person gh9    schedule 17.10.2014
comment
Совет. Если бы вы могли получить string из date/time в формате YYYY/MM/DD HH:mm:ss и объединить его с title, вы могли бы отсортировать array по этим объединенным данным.   -  person melancia    schedule 17.10.2014


Ответы (1)


Вы можете сделать это одним методом sort. Кости его:

yourArray.sort(function(a, b) {
    var adate = /* ...parse the date in a.date... */,
        bdate = /* ...parse the date in b.date... */,
        rv = adate - bdate;
    if (rv === 0) {
        rv = a.title.localeCompare(b.title);
    }
    return rv;
});

Я оставлю анализ этого странного формата даты в качестве упражнения для читателя...

person T.J. Crowder    schedule 17.10.2014