按ruby中数组的当前排序顺序查找索引

Ark*_*koD 0 ruby arrays sorting

如果有阵列

array A = ["a","b","c","d"] #Index is [0,1,2,3]
Run Code Online (Sandbox Code Playgroud)

它被分类到.

array A = ["d","c","b","a"]
Run Code Online (Sandbox Code Playgroud)

我需要一个数组,根据排序顺序返回更新的索引

[3,2,1,0]
Run Code Online (Sandbox Code Playgroud)

我正试图找到这个红宝石的解决方案

更新问题

如果a被排序为

array A = ["d","b","c","a"] #not a pure reverse
Run Code Online (Sandbox Code Playgroud)

然后返回的索引数组应该是

[3,1,2,0]
Run Code Online (Sandbox Code Playgroud)

tad*_*man 6

您需要创建一个保留原始订单的映射表,然后使用该订单取消映射重新订购的版本:

orig = %w[ a b c d ]
orig_order = orig.each_with_index.to_h

revised = %w[ d c b a ]

revised.map { |e| orig_order[e] }
# => [3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)

只要您的元素是唯一的,这将能够跟踪任何顺序的转变.