Сортировка массива пользовательских объектов в JavaScript
Скажем, у меня есть массив объектов Employee:
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")
];
С этой точки зрения,employees.sort()
ничего не значит, потому что интерпретатор не знает, как сортировать эти пользовательские объекты. Так что я передаю свою собственную функцию сортировки.
employees.sort(function(employee1, employee2){
return employee1.age > employee2.age;
});
Сейчасemployees.sort()
работает денди.
But what if I also wanted to control what field to be sorted on, passing it in somehow during runtime? Могу ли я сделать что-то подобное?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
Я не могу заставить его работать, поэтому предложения? Возможно, дизайн рефакторинга на основе шаблонов?