Indexing an array with duplicate elements
===

This is the basic problem: I have an array of integers with possibly duplicate elements. I need to know the indices of each element, but when I sort the array, whenever I select an element from the new array, I want to be able to reference the same element from the original array.

I am looking for a solution to the problem, or maybe a solution to the approach I am taking.

Here is an array
   
    a = [1, 2, 3, 4, 3, 5, 2]

There are two 2's and two 3's, but if I'm working with the first `2` (from the left), I want to work with index 1, and if I'm working with the second `2`, I want to be working with index 6. So I use a helper array to allow me to do this:

    helper = [0, 1, 2, 3, 4, 5, 6]

Which I will iterate over and use to access each element from `a`.  
I could have accomplished this with `each_with_index`, but the problem begins when I sort the array.

Now I have a sort order

    sort_order = [2, 4, 1, 5, 3]

I use `sort_by` to sort `a` according to sort_order, to produce

    sorted_a = [2, 2, 4, 1, 5, 3, 3]

You may assume all elements in the input exist in `sort_order` to avoid `sort_by` exceptions.

Now the problem is that my `helper` array should be updated to match the new positions. Each element should be sorted the same way as `a` was sorted, because it is unclear whether the first 2 in the new array was at index 1 or at index 6 of the original array.

So my new helper array might look like

    new_helper = [1, 6, 3, 0, 5, 2, 4]

So if I were to go with this approach, how would I produce the `new_helper` array, given the original array and the sort order?

Maybe there is a better way to do this?