Joe*_*Joe 5 javascript sorting
SO上有很多关于类似问题的答案,它们都描述了如何实现自定义排序函数来对javascript对象数组进行排序.
但是,我想知道是否有可能实现更抽象的自定义排序,这将允许我传递我想要它排序的对象的属性的名称.这可能会让我不得不一遍又一遍地实现非常相似的功能.
所以,如果我有一个对象构造函数,如:
function Car(mph, cc) {
this.maxSpeed = mph;
this.engineSize = cc;
}
Run Code Online (Sandbox Code Playgroud)
然后而不是实现两个排序函数:
function sortCarsOnMaxSpeed(a, b) { return a.maxSpeed - b.maxSpeed; }
function sortCarsOnEngineSize(a, b) { return a.engineSize - b.engineSize; }
Run Code Online (Sandbox Code Playgroud)
我可以有某种通用功能,例如:
function sortObjectsOnProperty(a, b, property) {
return a[property] - b[property];
}
Run Code Online (Sandbox Code Playgroud)
但自定义排序似乎只有2个参数.
有关如何做到这一点的任何建议?
非常感谢.
您需要编写一个带有属性名称并返回比较器的函数:
function createComparator(property) {
return function(a, b) {
return a[property] - b[property];
};
}
Run Code Online (Sandbox Code Playgroud)
你会像这样使用它:
arr.sort(createComparator("maxSpeed"));
Run Code Online (Sandbox Code Playgroud)