在Ruby中,如何通过另一个多维数组对一个多维数组进行排序?

4
假设有一个数组:a = [[1,2,3],[4,5]] 还有另一个数组:b = [[2.5,1.5,3.5],[1.5,2.5]]
我需要根据'b'对'a'进行排序。 即输出应为= [[3,1,2],[5,4]]
我尝试过编写代码,但我的代码似乎很冗长。如果您能帮助我,将不胜感激。谢谢!

1
“按照‘b’对‘a’进行排序”是什么意思?你的样本输出对我来说没有意义。 - sepp2k
2个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接