Предположим, что у меня есть массив Javascript, например:
var test = ['b', 'c', 'd', 'a'];
Я хочу отсортировать массив. Очевидно, я могу просто сделать это, чтобы отсортировать массив:
test.sort(); //Now test is ['a', 'b', 'c', 'd']
Но мне действительно нужен массив индексов, который указывает положение отсортированных элементов относительно исходных элементов. Я не совсем уверен, как это сформулировать, поэтому, возможно, именно поэтому мне трудно понять, как это сделать.
Если такой метод был вызван sortIndices(), то я бы хотел:
var indices = test.sortIndices();
//At this point, I want indices to be [3, 0, 1, 2].
'a' находилось в положении 3, 'b' находилось в 0, 'c' находилось в 1, а 'd' составляло 2 в исходном массиве. Следовательно, [3, 0, 1, 2].
Одним из решений будет сортировка копии массива, а затем цикл через отсортированный массив и поиск позиции каждого элемента в исходном массиве. Но это неудобно.
Есть ли существующий метод, который делает то, что я хочу? Если нет, как бы вы начали писать метод, который делает это?