Sie können eine wiederverwendbare Sortierfunktion verwenden.
Array.prototype.order = function (prop, methods = {}) {
if (prop?.constructor == Object) {
methods = prop;
prop = null;
}
const [orderType_a, orderType_b] = methods.reverse ? [1, -1] : [-1, 1];
const $ = x => prop
? methods.insensitive
? String(x[prop]).toLowerCase()
: x[prop]
: methods.insensitive
? String(x).toLowerCase()
: x;
const fn = (a, b) => $(a) < $(b) ? orderType_a : $(b) < $(a) ? orderType_b : 0;
return this.sort(fn);
};
Es kann sowohl zum Sortieren Array y Objekt in Reihe
.
let items = [{ x: "Z" }, 3, "1", "0", 2, { x: "a" }, { x: 0 }];
items
.order("x", { insensitive: 1 })
// [ { x: 0 }, { x: 'a' }, 3, '1', '0', 2, { x: 'Z' } ]
.order({ reverse: 1 })
// [ { x: 0 }, { x: 'a' }, 3, 2, { x: 'Z' }, '1', '0' ]
.sort(x => typeof x == "string" || typeof x == "number" ? -1 : 0)
// [ '0', '1', 2, 3, { x: 0 }, { x: 'a' }, { x: 'Z' } ]
1. (fakultativ) > zum Sortieren der im Array enthaltenen Objekte.
2. ist Methode > { reverse: any, insensitive: any }
8 Stimmen
Mit diesem Skript können Sie genau das tun, es sei denn, Sie möchten Ihre eigene Vergleichsfunktion oder Ihren eigenen Sortierer schreiben: thomasfrank.se/sortierung_der-dinge.html
0 Stimmen
Der schnellste Weg ist die Verwendung der isomorphen sort-array Modul, das nativ sowohl im Browser als auch im Node funktioniert und jede Art von Eingabe, berechnete Felder und benutzerdefinierte Sortierreihenfolgen unterstützt.
0 Stimmen
Function compare( a, b ) { if ( a.last_nom < b.last_nom ){ return -1; } if ( a.last_nom > b.last_nom ){ return 1; } return 0; } objs.sort( compare );
0 Stimmen
Objs.sort((a,b) => (a.last_nom > b.last_nom) ? 1 : ((b.letzte_Nom > a.letzte_Nom) ? -1 : 0))
0 Stimmen
@artem Bitte reichen Sie Ihre eigene Antwort ein.
2 Stimmen
@RobertTalada das ist meine Antwort stackoverflow.com/a/67021585/7012450
0 Stimmen
Das Muster für Sortierung nach Eigenschaften lexikographisch ist
objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom))
. Zum Sortieren numerisch verwendena.prop - b.prop
. Um absteigend statt aufsteigend zu sortieren, negieren Sie den Rückgabewert (z. B.b.last_nom.localeCompare(a.last_nom)
anstelle vona.last_nom.localeCompare(b.last_nom)
). Zum Sortieren nach mehrere Objekte , Kette andere Sorten mit||
z.B.b.someNumber - a.someNumber || a.someString.localeCompare(b.someString)
.2 Stimmen
Groß-/Kleinschreibung beachten oder nicht beachten?