На 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];
}
, но пользовательская сортировка, кажется, принимает только 2 аргумента.
Есть предложения, как мне это сделать?
Большое спасибо.