Moment: ソート比較機能

作成日 2014年02月25日  ·  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 、これは必要ないようです。

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が同じである場合、それらを所定の位置に保持するのではなく、交換します。 あまり聞こえないことは知っていますが、一部の人にとっては予想外のことかもしれません。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

RobinvanderVliet picture RobinvanderVliet  ·  3コメント

dogukankotan picture dogukankotan  ·  3コメント

slavafomin picture slavafomin  ·  3コメント

IbraheemAlSaady picture IbraheemAlSaady  ·  3コメント

ninigix picture ninigix  ·  3コメント