Ich muss einen einfachen Ranking-Algorithmus in Ember erstellen. Es muss eine Reihe von Ember-Modellen nehmen und eine Ordinalzahl erzeugen, die im Falle von Bindungen den gleichen Rang zuweist und die verbundenen Ränge entsprechend überspringt. Die Anzahl der Elemente in jedem Array ist klein, so dass die Leistung keine kritische Überlegung ist. Ich würde gerne Ember-Idiome beibehalten, wo es möglich ist.Ember Ranking-Algorithmus
Beispiel:
// 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]
});
Dann, angesichts der folgenden Konkurrenten, Partituren:
Alpha, 100
Beta, 90
BetaPrime, 90
BetaDoublePrime, 90
Gamma, 80
würde Ich mag die rank
berechnete Eigenschaft zurück, wie folgt:
Alpha, 1
Beta, 2
BetaPrime, 2
BetaDoublePrime, 2
Gamma, 5
I kann dies in Python tun, aber ich bin neu in Ember/Javascript und kann das nicht ganz herausfinden. Ich bin mir sicher, dass eine Kombination aus Map/Reduce der Schlüssel ist, aber ansonsten ahnungslos ... Danke.
Dies implementiert nicht die Schlüsselfunktion, die Krawatten denselben Rang zuweist. – dbinetti
@dhinetti Ich aktualisierte die Antwort – jcbvm
(Bearbeitete Anforderungen, um genauer zu sein :) Danke, aber ich brauche die Krawatte Rang übersprungen, so dass das Ergebnis ist: 'Alpha, 1; Beta, 2; BetaPrime, 2; BetaDoublePrime, 2; Gamma, 5; 'Diese Antwort erzeugt' Alpha, 1; Beta, 2; BetaPrime, 2; Gamma, 3; ' – dbinetti