ruby如何排序这个Hash of Arrays

时间:2014-08-06 04:15:01

标签: ruby-on-rails ruby arrays hash

如何按以下方式对以下数组进行排序:最高位置:local_totals从最高到最低。在我的视图页面上,我遍历这个数组并完全按照我想要的方式显示数据,但现在我想将它们从最高位置本地总数排序到最低位置。这可能是以下格式吗?

@summaries = [{:time_frame=>"Today", :locations=>["Tampa", "Atlanta", "California", "Georgia", "South Lake Union"], :local_totals=>[100000, 30000, 70000, 50000, 60000], :expenses=>[2000, 10000, 4000, 6000, 5000]}] 

我试图以许多不同的方式使用标准的ruby sort_by方法但是没有成功。

1 个答案:

答案 0 :(得分:0)

看起来你实际上有一个包含一些数组的哈希。清理它我认为应该看起来像这样:

hash = {:time_frame=>"Today", :locations=>["Tampa", "Atlanta", "California", "Georgia", "South Lake Union"], :local_totals=>[10000.0, 30,000, 70000, 50000, :expenses=>[2000, 10000, 4000, 6000]}

假设这是正确的,你可以做这样的事情来解决你的问题:

hash[:locations].zip(hash[:local_totals]).sort_by(&:last)

这假设数组中的位置匹配。

我意识到通过回答这个问题,我鼓励不好的问题,但这是我看到它并想知道我是如何解决它的情况之一,然后我想我也可以发布我的解决方案。 :)

MINASWAN:)

或者如果你想按照书面解决它:

@summaries[0][:locations].zip(@summaries[0][:local_totals]).sort_by(&:last).reverse