Ordenar la matriz de objetos personalizados en JavaScript
Digamos que tengo una serie de objetos de empleado:
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")
];
En este punto,employees.sort()
no significa nada, porque el intérprete no sabe cómo ordenar estos objetos personalizados. Así que paso en mi función de ordenación personalizada.
employees.sort(function(employee1, employee2){
return employee1.age > employee2.age;
});
Ahoraemployees.sort()
trabaja dandy.
Pero, ¿y si también quisiera controlar en qué campo se va a ordenar, pasándolo de alguna manera durante el tiempo de ejecución? ¿Puedo hacer algo como esto?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
¿No puedo hacer que funcione, así que sugerencias? ¿Diseño de refactorización basada en patrones tal vez?