2010-04-05 81 views
4

可以說我有一個數組:a = [[1,2,3],[4,5]] 並且我有另一個數組:b = [[2.5,1.5,3.5],[1.5,2.5]]在Ruby中,如何用另一個多維數組排列一個多維數組?

我需要對'b'進行排序。 即輸出應該= [[3,1,2],[5,4]]

我試過了,但我的代碼似乎很長。如果你能幫助我,這將是非常棒的。謝謝!

+1

告訴我們你的代碼 – Eimantas 2010-04-05 17:10:28

+1

你是什麼「之類的‘A’相對於‘B’」是什麼意思?你的示例輸出對我來說沒有意義。 – sepp2k 2010-04-05 17:16:04

回答

3

這給你的樣本輸出的樣本輸出,所以希望它是你想要的(它將第一個數組中每個子數組的值與第二個數組的相應子數組中相同位置的值進行排序,遞減) :

class Array 
    def sort_by_other_array(arr) 
    zip(arr).sort_by {|x,y| y}.map {|x,y| x} 
    end 
end 

a=[[1,2,3],[4,5]] 
b=[[2.5,1.5,3.5],[1.5,2.5]] 
a.zip(b).map {|x,y| x.sort_by_other_array(y).reverse} 
#=> [[3, 1, 2], [5, 4]] 
1

下一次,發佈您的代碼將是一個好主意,並且上下文的解釋也可以得心應手。

這裏有一種方式來獲得您想要的結果

a.zip(b).map do |values, sort_values| 
    sort_values.zip(values).sort.reverse_each.map{|sort, value| value} 
end