2010-04-05 84 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