モーメントオブジェクト(またはモーメントであり、ソートキーである必要がある属性を持つオブジェクト)のリストを並べ替える場合、比較関数が含まれていると便利です。 そのため、次のようなことができます。
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
、これは必要ないようです。
typescriptの場合、これはそれほど単純ではありません。 入力では、 a - b
と言うことはできません。
代わりに、私は次のように言います。
a.isBefore(b) ? -1 : 1
私がその1と-1を正しい方法で得たかどうかはわかりません。
typescriptの場合、これはそれほど単純ではありません。 タイピングでは、a-bと言うことはできません。
moment#valueOfをa.valueOf() - b.valueOf()
として明示的に呼び出すことができます
私は部分的です:
momentsArray.sort((a, b) => a.diff(b));
私自身。
@robertmassaioliコードに注意してください。
a.isBefore(b) ? -1 : 1
aが同じである場合、それらを所定の位置に保持するのではなく、交換します。 あまり聞こえないことは知っていますが、一部の人にとっては予想外のことかもしれません。
最も参考になるコメント
moment#valueOf
関数があるため、比較関数は簡単です。