Supponiamo che io sono un array di Javascript, in questo modo:Javascript: Ordina array e restituire un array di indicies che indica la posizione degli elementi ordinati con rispetto agli elementi originali
var test = ['b', 'c', 'd', 'a'];
voglio ordinare l'array . Ovviamente, posso solo fare questo per ordinare l'array:
test.sort(); //Now test is ['a', 'b', 'c', 'd']
Ma quello che voglio davvero è un array di indici che indica la posizione degli elementi ordinati con rispetto agli elementi originali. Non sono del tutto sicuro su come esprimerlo, quindi forse è per questo che ho difficoltà a capire come farlo.
Se un tale metodo è stato chiamato sortIndices(), quindi quello che vorrei è:
var indices = test.sortIndices();
//At this point, I want indices to be [3, 0, 1, 2].
'un' era in posizione 3, 'b' era a 0, 'c' era a 1 e 'd' era un 2 nella matrice originale. Quindi, [3, 0, 1, 2].
Una soluzione consiste nell'ordinare una copia dell'array, quindi scorrere l'array ordinato e trovare la posizione di ciascun elemento nell'array originale. Ma questo sembra goffo.
Esiste un metodo esistente che fa ciò che voglio? Se no, come andresti a scrivere un metodo che faccia questo?
+1 ma penso che sia meglio non utilizzare un ciclo 'for .. in' su un array. – Tomalak
Questa è una buona idea. Lo proverò. (Accetterò una volta che lo avrò funzionato.) – Jeremy
@Tomalak: Sono d'accordo con te riguardo a ... in. Ho incontrato molti problemi con esso. – Jeremy