Moment: Функция сравнения сортировки

Созданный на 25 февр. 2014  ·  6Комментарии  ·  Источник: moment/moment

При сортировке списка объектов моментов (или объектов, которые имеют атрибут, который является моментом и должен быть ключом сортировки), было бы здорово, если бы в него была включена функция сравнения. Чтобы мы могли делать что-то вроде:

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"]

Все 6 Комментарий

Из-за функции 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 - то же самое, он бы поменял их местами, а не оставил бы на месте. Я знаю, это звучит не так уж и много, но для некоторых это может быть неожиданностью.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги