Мне нужно создать простой алгоритм ранжирования в Ember. Он должен взять массив моделей Ember и создать порядковый номер, который в случае равенства присваивает один и тот же ранг и соответственно пропускает связанные ранги. Количество элементов в каждом массиве невелико, поэтому производительность не имеет решающего значения. Я хотел бы сохранить идиомы Ember, где это возможно.
Пример:
// models/competition.js
export default Model.extend({
competitors: hasMany('competitor')
ranks: computed.[ranking function here]
});
// models/competitor.js
export default Model.extend({
name: attr('string'),
score: attr('number'),
competition: belongsTo('competition')
rank: computed.[return rank here]
});
Затем, учитывая следующих участников, баллы:
Alpha, 100
Beta, 90
BetaPrime, 90
BetaDoublePrime, 90
Gamma, 80
Я бы хотел, чтобы вычисляемое свойство rank
возвращалось следующим образом:
Alpha, 1
Beta, 2
BetaPrime, 2
BetaDoublePrime, 2
Gamma, 5
Я могу сделать это на питоне, но я новичок в Ember/Javascript и не могу в этом разобраться. Я уверен, что ключом является какая-то комбинация map/reduce, но в остальном я не знаю... Спасибо.