Sortowanie tablicy niestandardowych obiektów w JavaScript
Powiedz, że mam tablicę obiektów pracowników:
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")
];
W tym momencieemployees.sort()
nic nie znaczy, ponieważ interpreter nie wie, jak sortować te niestandardowe obiekty. Więc przechodzę w mojej funkcji sortowania niestandardowego.
employees.sort(function(employee1, employee2){
return employee1.age > employee2.age;
});
Terazemployees.sort()
działa elegancko.
Ale co, jeśli chciałbym również kontrolować, które pole ma być sortowane, przekazując je w jakiś sposób w czasie wykonywania? Czy mogę zrobić coś takiego?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
Nie mogę go uruchomić, więc sugestie? Być może refaktoryzacja oparta na wzorach projektowych?