Array von benutzerdefinierten Objekten in JavaScript sortieren
Angenommen, ich habe eine Reihe von Mitarbeiterobjekten:
var Employee = function(fname, age) {
this.fname = fname;
this.age = age;
}
var employees = [
new Employee("Jack", "32"),
new Employee("Dave", "31"),
new Employee("Rick", "35"),
new Employee("Anna", "33")
];
An diesem Punkt,employees.sort()
bedeutet nichts, da der Interpreter nicht weiß, wie diese benutzerdefinierten Objekte sortiert werden. Also übergebe ich meine benutzerdefinierte Sortierfunktion.
employees.sort(function(employee1, employee2){
return employee1.age > employee2.age;
});
Jetztemployees.sort()
arbeitet dandy.
Aber was ist, wenn ich auch steuern möchte, nach welchem Feld sortiert werden soll, und es dann zur Laufzeit irgendwie weitergeben möchte? Kann ich so etwas machen?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
Ich kann es nicht zum Laufen bringen, also Vorschläge? Design Pattern Based Refactoring vielleicht?