algorithme de réordonnancement
-
20-08-2019 - |
Question
J'ai un tableau HTML ainsi:
up | dn
[ ] Item 1
[x] Item 2
[ ] Item 3
[ ] Item 4
[x] Item 5
[ ] Item 6
[ ] Item 7
Si 2 & amp; 5 sont vérifiés et je clique, le résultat est:
up | dn
[x] Item 2
[x] Item 5
[ ] Item 1
[ ] Item 3
[ ] Item 4
[ ] Item 6
[ ] Item 7
Si je clique sur dn, le résultat est le suivant:
up | dn
[ ] Item 1
[ ] Item 3
[ ] Item 4
[ ] Item 6
[x] Item 2
[x] Item 5
[ ] Item 7
En d'autres termes, les éléments sont regroupés dans la direction choisie, puis déplacés d'une ligne dans cette direction. Quelqu'un at-il un bon algorithme pour cela? Je suis sûr que je peux écrire quelque chose sans trop de difficulté, mais cela semble être le genre de chose qui devrait être & "Là-bas &"; ....
.La solution
Je pense que je penche pour une approche copier-coller, car les frameworks js facilitent le déplacement des morceaux de DOM.
- obtenir les lignes des éléments vérifiés
- obtenir l'index de l'item {top} le plus vérifié
- supprime les lignes & amp; insérez-les dans la table à {index-1}
- (bien sûr, top pourrait être en bas, et index-1 est plus complexe en fonction de la direction et si nous sommes déjà à l'extrême ou non)
Autres conseils
Cela ressemble à une tâche de tri à plusieurs clés. Vous pouvez utiliser quelque chose comme l'interface Sortable de jQuery UI. Votre condition de tri serait quelque chose comme: a.selected & Lt; = & Gt; b.selected & amp; & amp; a.index < = > b.index.
Ignorer: vous souhaitez utiliser l’ algorithme de Fisher Yates Shuffle .