【问题标题】:In Ruby how do you sort one multi dimendional array by another multi dimensional array?在 Ruby 中,如何通过另一个多维数组对一个多维数组进行排序?
【发布时间】:2010-04-05 17:07:55
【问题描述】:

假设我有一个数组:a=[[1,2,3],[4,5]] 我还有另一个数组: b=[[2.5,1.5,3.5],[1.5,2.5]]

我需要根据“b”对“a”进行排序。 即输出应该是 = [[3,1,2],[5,4]]

我试过了,但我的代码似乎很长。如果您能帮助我,那就太好了。谢谢!

【问题讨论】:

  • 你所说的“对'b'排序'a'”是什么意思?您的示例输出对我来说没有意义。

标签: ruby sorting arrays


【解决方案1】:

这将为您的示例输入提供示例输出,因此希望它是您想要的(它按第二个数组的相应子数组中相同位置的值对第一个数组中每个子数组的值进行降序排序):

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]]

【讨论】:

    【解决方案2】:

    下一次,把你的代码贴出来是个好主意,对上下文的解释也很方便。

    这是获得所需结果的一种方法

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

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2020-05-30
      • 2019-06-30
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多