Angenommen, Sie haben eine solche JavaScript-Klasse
var DepartmentFactory = function(data) {
this.id = data.Id;
this.name = data.DepartmentName;
this.active = data.Active;
}
Angenommen, Sie erstellen dann eine Reihe von Instanzen dieser Klasse und speichern sie in einem Array
var objArray = [];
objArray.push(DepartmentFactory({Id: 1, DepartmentName: 'Marketing', Active: true}));
objArray.push(DepartmentFactory({Id: 2, DepartmentName: 'Sales', Active: true}));
objArray.push(DepartmentFactory({Id: 3, DepartmentName: 'Development', Active: true}));
objArray.push(DepartmentFactory({Id: 4, DepartmentName: 'Accounting', Active: true}));
Also hätte ich jetzt eine Reihe von Objekten erstellt von DepartmentFactory
. Wie würde ich die array.sort()
Methode verwenden, um dieses Array von Objekten nach der DepartmentName
Eigenschaft jedes Objekts zu sortieren ?
Die array.sort()
Methode funktioniert einwandfrei, wenn ein Array von Zeichenfolgen sortiert wird
var myarray=["Bob", "Bully", "Amy"];
myarray.sort(); //Array now becomes ["Amy", "Bob", "Bully"]
Aber wie mache ich es mit einer Liste von Objekten?
javascript
jdavis
quelle
quelle
DepartmentFactory
als Konstruktor verwenden, erstellen Sie seine Objekte mitnew DepartmentFactory
, andernfalls wird das Array mit einer Reihe vonundefined
Werten gefüllt .Antworten:
Sie müssten so etwas tun:
Hinweis: Durch Ändern der Groß- / Kleinschreibung (Groß- oder Kleinschreibung) wird eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung sichergestellt.
quelle
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
Ich werde Ihre Antwort nicht bearbeiten und hoffe, dass ich mich zumindest an dieSo unterstützen Sie Unicode:
quelle
return a.DepartmentName.toLowerCase().localeCompare(b.DepartmentName.toLowerCase());
localeCompare
ist cool und hat alle Browser-Unterstützung für das erste Argument. Nicht schlecht!localeCompare
ist, die Arbeit der Verwaltung der Sortierlogik und der Gebietsschema-Macken auf das System zu verlagern. Wenn es für das Gebietsschema normal ist, eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, wie dies in Englisch der Fall ist, wird dies für Sie erledigt:"Z" > 'a' // false
"Z".localeCompare('a') // 1
Wenn Sie von der Standardeinstellung des Gebietsschemas abweichen möchten, können Sie Überschreibungen in den Parameternlocales
und sendenoptions
: developer.mozilla. org / de-US / docs / Web / JavaScript / Reference /…Demo: http://jsfiddle.net/diode/hdgeH/
quelle
quelle
DEMO
quelle
quelle
mach es so
quelle
Dies sortiert sie alphabetisch UND unterscheidet nicht zwischen Groß- und Kleinschreibung. Es ist auch super sauber und leicht zu lesen: D.
quelle
Hier ist eine einfache Funktion, mit der Sie ein Array von Objekten nach ihren Eigenschaften sortieren können. Es spielt keine Rolle, ob es sich bei der Eigenschaft um eine Art Zeichenfolge oder eine Ganzzahl handelt, sie funktioniert.
quelle
Sie müssen eine Funktion übergeben, die zwei Parameter akzeptiert, vergleicht und eine Zahl zurückgibt. Angenommen, Sie möchten sie nach der ID sortieren, die Sie schreiben würden ...
quelle
Nachdem ich ein wenig versucht und versucht hatte, so wenig Schleifen wie möglich zu erstellen, kam ich zu folgender Lösung:
Demo auf Codepen
quelle
Eine einfache Antwort:
ES6 Weg:
Wenn Sie es in Klein- / Großbuchstaben usw. schreiben müssen, tun Sie dies einfach und speichern Sie das Ergebnis in einer Variablen, als Sie diese Variable vergleichen. Beispiel:
quelle