假设我有一个员工对象的数组:
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()
很好用。但是如果我也想在运行时控制要排序的字段,传递它怎么办?我能做类似这样的事情吗?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
我无法使它工作,有什么建议吗?也许可以基于设计模式进行重构?