従業員オブジェクトの配列があるとします:
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;
});
私はそれを機能させることができないので、提案はありますか?おそらくデザインパターンベースのリファクタリング?