假设我有一个 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;
});
Now employees.sort()
工作花花公子。
但是,如果我还想控制要排序的字段,并在运行时以某种方式传递它怎么办?我可以做这样的事情吗?
employees.sort(function(employee1, employee2, on){
if(on === 'age') {
return employee1.age > employee2.age;
}
return employee1.fname > employee2.fname;
});
我无法让它工作,所以建议?也许基于设计模式的重构?