在SO上有很多类似问题的答案,它们都描述了如何实现自定义排序函数来对JavaScript对象数组进行排序。
然而,我想知道是否可能实现一种更抽象的自定义排序,以允许我传递我想要按其排序的对象属性的名称。这可能会使我避免反复实现非常相似的函数。
所以如果我有一个像这样的对象构造器:
function Car(mph, cc) {
this.maxSpeed = mph;
this.engineSize = cc;
}
那么,不用实现两个排序函数:
function sortCarsOnMaxSpeed(a, b) { return a.maxSpeed - b.maxSpeed; }
function sortCarsOnEngineSize(a, b) { return a.engineSize - b.engineSize; }
我可以创建一个通用函数,例如:
我可以创建一个类似这样的通用函数:
function sortObjectsOnProperty(a, b, property) {
return a[property] - b[property];
}
但似乎自定义排序只接受两个参数。有什么建议可以解决这个问题吗?
非常感谢。