При сортировке списка объектов моментов (или объектов, которые имеют атрибут, который является моментом и должен быть ключом сортировки), было бы здорово, если бы в него была включена функция сравнения. Чтобы мы могли делать что-то вроде:
array.sort(m.compare)
Из-за функции moment#valueOf
функция сравнения тривиальна.
var array = [
moment(),
moment().add(1, 'd'),
moment().subtract(1, 'd')
];
console.log(array.map(function (m) {
return m.format('YYYY-MM-DD')
}));
// ["2014-02-24", "2014-02-25", "2014-02-23"]
array.sort(function (a, b) {
return a - b;
});
console.log(array.map(function (m) {
return m.format('YYYY-MM-DD')
}));
// ["2014-02-23", "2014-02-24", "2014-02-25"]
Спасибо.
Я явно использовал moment#valueOf
, похоже, мне это не нужно.
С машинописным текстом это не так просто. Печатание не позволяет вам сказать a - b
.
Вместо этого я просто говорю что-то вроде:
a.isBefore(b) ? -1 : 1
Не уверен, правильно ли я получил эти 1 и -1.
С машинописным текстом это не так просто. Печатание не позволяет вам сказать a - b.
Вы можете явно вызвать момент # valueOf как a.valueOf() - b.valueOf()
Я неравнодушен к:
momentsArray.sort((a, b) => a.diff(b));
себя.
@robertmassaioli будьте осторожны со своим кодом,
a.isBefore(b) ? -1 : 1
если a - то же самое, он бы поменял их местами, а не оставил бы на месте. Я знаю, это звучит не так уж и много, но для некоторых это может быть неожиданностью.
Самый полезный комментарий
Из-за функции
moment#valueOf
функция сравнения тривиальна.