Moment: Função de comparação de classificação

Criado em 25 fev. 2014  ·  6Comentários  ·  Fonte: moment/moment

Ao classificar uma lista de objetos de momento (ou objetos que têm um atributo que é um momento e deveria ser a chave de classificação), seria ótimo se houvesse uma função de comparação incluída. Para que pudéssemos fazer coisas como:

array.sort(m.compare)

Comentários muito úteis

Por causa da função moment#valueOf , a função de comparação é trivial.

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

Todos 6 comentários

Por causa da função moment#valueOf , a função de comparação é trivial.

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

Obrigado.

Eu estava usando explicitamente moment#valueOf , parece que não preciso.

Com o texto datilografado, isso não é tão simples. As digitações não permitem que você diga a - b .

Em vez disso, apenas digo algo como:

a.isBefore(b) ? -1 : 1

Não tenho certeza se acertei 1 e -1 da maneira certa.

Com o texto datilografado, isso não é tão simples. As digitações não permitem que você diga a - b.

Você pode chamar explicitamente o momento # valueOf como a.valueOf() - b.valueOf()

Sou parcial para:

momentsArray.sort((a, b) => a.diff(b));

Eu mesmo.

@robertmassaioli tenha cuidado com seu código,

a.isBefore(b) ? -1 : 1

se a for o mesmo, ele os trocaria, em vez de mantê-los no lugar. Eu sei que não parece muito, mas pode ser inesperado para alguns.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dogukankotan picture dogukankotan  ·  3Comentários

danieljsinclair picture danieljsinclair  ·  3Comentários

slavafomin picture slavafomin  ·  3Comentários

RobinvanderVliet picture RobinvanderVliet  ·  3Comentários

ghost picture ghost  ·  3Comentários