Problème
J'ai un tableau 2d, qui est en fait des données saisies dans Google Sheet. Il est trié par logique, défini par un utilisateur.Type de position de 2d Tableau
L'objectif est d'entrer de nouvelles lignes à la fin de cette table, puis de les trier par position.
Dire « par la position » je veux dire « l'Europe » va avant « l'Amérique » parce qu'un utilisateur a entré plus tôt.
est ici tableau d'échantillons pour les tests:
var data =
[
['Earth', 'Europe', 'Britain', 'London'],
['Earth', 'Europe', 'Britain', 'Manchester'],
['Earth', 'Europe', 'Britain', 'Liverpool'],
['Earth', 'Europe', 'France', 'Paris'],
['Earth', 'Europe', 'France', 'Lion'],
['Earth', 'Europe', 'Italy', 'Rome'],
['Earth', 'Europe', 'Italy', 'Milan'],
['Earth', 'Europe', 'Greece', 'Athenes'],
['Earth', 'Asia', 'China', 'Pekin'],
['Earth', 'Africa', 'Algeria', 'Algiers'],
['Earth', 'America', 'USA', 'Dallas'],
['Earth', 'America', 'USA', 'New York'],
['Earth', 'America', 'USA', 'Chicago'],
['Tatooine', 'Yulab', 'Putesh', 'ASU'],
['Tatooine', 'Yulab', 'Putesh', 'Niatirb'],
['Tatooine', 'Yulab', 'Zalip', 'Duantan'],
['Tatooine', 'Asia', 'Solo', 'Lion'],
['Tatooine', 'Asia', 'Solo', 'To'],
['Earth', 'America', 'USA', 'San Francisco'],
['Tatooine', 'Yulab', 'Koko', 'Traiwau'],
['Venus', 'Yoo', 'Van', 'Derzar'],
['Tatooine', 'Chendoo', 'org', 'Eccel']
];
Et correct tableau résultant est:
/*
[ [Earth, Europe, Britain, London],
[Earth, Europe, Britain, Manchester],
[Earth, Europe, Britain, Liverpool],
[Earth, Europe, France, Paris],
[Earth, Europe, France, Lion],
[Earth, Europe, Italy, Rome],
[Earth, Europe, Italy, Milan],
[Earth, Europe, Greece, Athenes],
[Earth, Asia, China, Pekin],
[Earth, Africa, Algeria, Algiers],
[Earth, America, USA, Dallas],
[Earth, America, USA, New York],
[Earth, America, USA, Chicago],
[Earth, America, USA, San Francisco],
[Tatooine, Yulab, Putesh, ASU],
[Tatooine, Yulab, Putesh, Niatirb],
[Tatooine, Yulab, Zalip, Duantan],
[Tatooine, Yulab, Koko, Traiwau],
[Tatooine, Asia, Solo, Lion],
[Tatooine, Asia, Solo, To],
[Tatooine, Chendoo, org, Eccel],
[Venus, Yoo, Van, Derzar]
]
*/
Je veux utiliser un script pour cela.
Ma solution
J'ai fait ma propre version d'un script, s'il vous plaît voir ici:
https://github.com/Max-Makhrov/positional-sorting/blob/master/main.js
Comment l'algorithme fonctionne
L'algorithme trouve des groupes à partir de la première rangée: Terre> Europe> Grande-Bretagne. Ensuite, il essaie de trouver une correspondance pour ces groupes dans les entrées ultérieures. J'ai aussi pensé à assigner des index plus élevés aux entrées précédentes.
Question
La question: y at-il de meilleures approches:
- moins de code pour accomplir la même tâche
- Plus façon générale pour trier un tableau par la position
- besoin assez de solution rapide, parce que je vais utiliser le code en feuilles et il a limits on script time.
@Luca, j'ai édité la question et limité d'identifier une réponse adéquate. Pourriez-vous s'il vous plaît le rouvrir. J'ai la bonne réponse et espère que ma question serait utile pour les autres utilisateurs –