Moment: Función de clasificación de comparación

Creado en 25 feb. 2014  ·  6Comentarios  ·  Fuente: moment/moment

Al ordenar una lista de objetos de momento (u objetos que tienen un atributo que es un momento, y debería ser la clave de clasificación), sería genial si se incluyera una función de comparación. Para que podamos hacer cosas como:

array.sort(m.compare)

Comentario más útil

Debido a la función moment#valueOf , la función de comparación es 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 comentarios

Debido a la función moment#valueOf , la función de comparación es 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"]

Gracias.

Estaba usando explícitamente moment#valueOf , parece que no lo necesito.

Con mecanografiado, esto no es tan simple. La mecanografía no le permite decir a - b .

En cambio, solo digo algo como:

a.isBefore(b) ? -1 : 1

No estoy seguro si obtuve ese 1 y -1 de la manera correcta.

Con mecanografiado, esto no es tan simple. Los mecanografiados no le permiten decir a - b.

Puede llamar explícitamente al momento # valueOf como a.valueOf() - b.valueOf()

Soy parcial a:

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

yo mismo.

@robertmassaioli tenga cuidado con su código,

a.isBefore(b) ? -1 : 1

si a es el mismo, los intercambiaría, en lugar de mantenerlos en su lugar. Sé que no parece mucho, pero podría ser inesperado para algunos.

¿Fue útil esta página
0 / 5 - 0 calificaciones