Moment: Vergleichsfunktion sortieren

Erstellt am 25. Feb. 2014  ·  6Kommentare  ·  Quelle: moment/moment

Beim Sortieren einer Liste von Momentobjekten (oder Objekten, die ein Attribut haben, das ein Moment ist und der Sortierschlüssel sein sollte) wäre es großartig, wenn eine Vergleichsfunktion enthalten wäre. Damit wir Dinge tun können wie:

array.sort(m.compare)

Hilfreichster Kommentar

Wegen der Funktion moment#valueOf ist die Vergleichsfunktion 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"]

Alle 6 Kommentare

Wegen der Funktion moment#valueOf ist die Vergleichsfunktion 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"]

Vielen Dank.

Ich habe explizit moment#valueOf , das sieht so aus, als ob ich das nicht brauche.

Mit Typoskript ist das nicht so einfach. Die Eingaben erlauben nicht, a - b zu sagen.

Stattdessen sage ich einfach so etwas wie:

a.isBefore(b) ? -1 : 1

Ich bin mir nicht sicher, ob ich das 1 und -1 richtig verstanden habe.

Mit Typoskript ist das nicht so einfach. Die Eingaben erlauben Ihnen nicht, a - b zu sagen.

Sie können den moment#valueOf explizit als a.valueOf() - b.valueOf()

Ich bin parteiisch für:

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

mich selber.

@robertmassaioli sei vorsichtig mit deinem Code,

a.isBefore(b) ? -1 : 1

Wenn a gleich ist, werden sie ausgetauscht, anstatt sie an Ort und Stelle zu halten. Ich weiß, es klingt nicht nach viel, aber es könnte für einige unerwartet sein.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ninigix picture ninigix  ·  3Kommentare

nikocraft picture nikocraft  ·  3Kommentare

vbullinger picture vbullinger  ·  3Kommentare

alvarotrigo picture alvarotrigo  ·  3Kommentare

dogukankotan picture dogukankotan  ·  3Kommentare