Bonjour,

J'espère ne pas m'être trompé en postant dans ce forum Node.js, où se trouvera le code sur lequel je m'interroge.

Je me suis lancé dans la réalisation d’une appli, où les utilisateurs peuvent sélectionner les joueurs qu’ils préfèrent, par ordre de préférence. Ces joueurs peuvent être les mêmes ou non.
Justement, le but est de déterminer le taux de ressemblance entre les sélections des utilisateurs, où l’ordre à son importance.

Nom : points.PNG
Affichages : 145
Taille : 13,9 Ko

Ainsi, pour traduire cette correspondance, j’ai pensé à un système de points (une sorte de matrice) :
Par exemples, en partant du principe que je sois l’utilisateur n°1 :
- Si un membre a sélectionné en n°1 le même joueur que le mien, on aura le maximum de points (soit 125 points avec le membre n°6).
- Si un membre a sélectionné mon joueur n°2 en 1ère position, alors ça sera 5 points de moins (100 points).
- Et ainsi de suite pour chacun des membres.

A la sortie, j’aimerais avoir la liste, dans l’ordre, des membres dont l’équipe se rapproche le plus de la mienne. Ici ça serait en 1er le membre n°6 avec 160 points au total, en 2ème le membre 4,…

Je pense exploiter ce système de points avec des requêtes en boucles :
- On parcourt le champ « joueur 1 » avec mon joueur 1,
Si on trouve une correspondance avec mon joueur 1, on retient les id des membres en question, et on leur ajoute 125 points.
- On parcourt le champ « joueur 2 » avec mon joueur 1,
Si correspondance => +120 points
- Et ainsi de suite jusqu’au champ « joueur 5 »

- On parcourt ensuite le champ « joueur 1 » avec mon joueur 2
Si on trouve une correspondance avec mon joueur 2, on retient les id des membres en question, et on leur ajoute 100 points.
- On parcourt le champ « joueur 2 » avec mon joueur 2,
Si correspondance => +100 points

- Et rebolote jusqu'à mon joueur 5.


Voilà où j’en suis.
Pensez-vous que cette idée par points soit une bonne piste ?
Cette requête par boucle me paraît très lourde en termes de ressources, (sachant que la BBD sera volumineuse). Est-ce qu’il n’y a pas plus simple selon vous ?
Je compte toutefois exploiter les possibilités d'agrégation de MongoDB (où sont enregistrées les données).
Enfin, je ne sais pas comment m’y prendre pour comptabiliser les points de chaque utilisateur, les stocker séparément et les restituer sur le front-end. Les stocker dans un tableau ? A quelle étape du traitement "basculer" sur le frontend ?

A vrai dire (mais vous le devinez à mes questions), je suis quasi-débutant en programmation. Pour l’instant, l’envoi du formulaire fonctionne depuis le backend (Node.js/Express) vers le frontend (Angular), et s’enregistre dans une BDD MongoDB.


Merci d'avance à ceux qui pourront m'aider.