Ordenação de array de objetos personalizados em JavaScript
Digamos que eu tenha uma matriz de objetos de funcionários:
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")
];
Neste ponto,employees.sort()
não significa nada, porque o interpretador não sabe como classificar esses objetos personalizados. Então eu passo na minha função de classificação personalizada.
employees.sort(function(employee1, employee2){
return employee1.age > employee2.age;
});
Agoraemployees.sort()
funciona dandy.
Mas e se eu também quisesse controlar o campo a ser classificado, passando-o de alguma forma durante o tempo de execução? Posso fazer algo assim?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
Eu não posso fazê-lo funcionar, então sugestões? Refatoração baseada em padrão de design, talvez?