2015-09-19 38 views
1

你將如何去以相同的方式對兩個數組進行排序?你如何對兩個數組完全相同?

hey = %w[e c f a d b g] 
hoo = [1,2,3,4,5,6,7] 
hey.sort  #=> [a,b,c,d,e,f,g] 
hoo.same_sort #=> [4,6,2,5,1,3,7] 
+0

我猜測這有什麼做的哈希值。 – Zahid

回答

6

有一個嘗試:

hey.zip(hoo).sort 
=> [["a", 4], ["b", 6], ["c", 2], ["d", 5], ["e", 1], ["f", 3], ["g", 7]] 

hey.zip(hoo).sort.transpose 
=> [["a", "b", "c", "d", "e", "f", "g"], [4, 6, 2, 5, 1, 3, 7]] 
3

您可以用單一排序做到這一點,利用Enumerable#sort_byArray#values_at

sorted_indices = hey.each_index.sort_by { |i| hey[i] } 
    #=> [3, 5, 1, 4, 0, 2, 6] 
hey.values_at(*sorted_indices) 
    #=> ["a", "b", "c", "d", "e", "f", "g"] 
hoo.values_at(*sorted_indices) 
    #=> [4, 6, 2, 5, 1, 3, 7] 
+0

我知道你會出現,我知道你會這樣做。 – sawa

+1

@sawa,我想你就是這麼做的。 –

相關問題