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)
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.
Hilfreichster Kommentar
Wegen der Funktion
moment#valueOf
ist die Vergleichsfunktion trivial.