En Array.sort() Methode sortiert die Elemente eines Arrays an Ort und Stelle und gibt das Array zurück. Seien Sie vorsichtig mit Array.sort() denn es ist nicht Unveränderlich . Für unveränderliche Sortierung verwenden Sie unveränderbar-sortieren .
Diese Methode sortiert das Array anhand der aktuellen updated_at
im ISO-Format. Wir verwenden new Data(iso_string).getTime()
um die ISO-Zeit in einen Unix-Zeitstempel umzuwandeln. Ein Unix-Zeitstempel ist eine Zahl, mit der wir einfache mathematische Berechnungen durchführen können. Wir subtrahieren den ersten und den zweiten Zeitstempel und das Ergebnis ist: Wenn der erste Zeitstempel größer ist als der zweite, ist die Rückgabezahl positiv. Wenn die zweite Zahl größer ist als die erste, ist der Rückgabewert negativ. Wenn beide gleich sind, ist der Rückgabewert Null. Dies stimmt perfekt mit den erforderlichen Rückgabewerten für die Inline-Funktion überein.
Para ES6 :
arr.sort((a,b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());
Para ES5 :
arr.sort(function(a,b){
return new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime();
});
Wenn Sie Ihre updated_at
zu Unix-Zeitstempeln zu machen, können Sie dies tun:
Para ES6 :
arr.sort((a,b) => a.updated_at - b.updated_at);
Para ES5 :
arr.sort(function(a,b){
return a.updated_at - b.updated_at;
});
Zum Zeitpunkt der Veröffentlichung dieses Beitrags unterstützen moderne Browser ES6 nicht. Um ES6 in modernen Browsern zu verwenden, verwenden Sie babel um den Code nach ES5 zu transpilieren. Erwarten Sie in naher Zukunft Browser-Unterstützung für ES6.
Array.sort() sollte einen Rückgabewert mit einem von 3 möglichen Ergebnissen erhalten:
- Eine positive Zahl (erste Position > zweite Position)
- Eine negative Zahl (erste Position < zweite Position)
- 0, wenn die beiden Posten gleich sind
Beachten Sie, dass der Rückgabewert der inlin positive oder negative Zahl sein kann. Array.Sort() kümmert sich nicht darum, was die Rückgabewert ist. Es ist nur wichtig, ob der Rückgabewert positiv ist, negativ oder Null ist.
Für unveränderliche Sortierung: (Beispiel in ES6)
const sort = require('immutable-sort');
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);
Sie können es auch so schreiben:
import sort from 'immutable-sort';
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);
Das import-from, das Sie sehen, ist ein neuer Weg, Javascript in ES6 einzubinden und lässt Ihren Code sehr sauber aussehen. Mein persönlicher Favorit.
Bei der unveränderlichen Sortierung wird das Ausgangs-Array nicht verändert, sondern ein neues Array zurückgegeben. Verwendung von const
wird für unveränderliche Daten empfohlen.