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)
您需要创建一个保留原始订单的映射表,然后使用该订单取消映射重新订购的版本:
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)
只要您的元素是唯一的,这将能够跟踪任何顺序的转变.