"21"}], [1, {:a=>"32", :b=>"11"}], [1, {:a=>"25", :b=>"1-6ren">
gpt4 book ai didi

ruby-on-rails - 如何按 Ruby 中的不同元素对混合数组进行排序?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:00 24 4
gpt4 key购买 nike

我有一个类似这样的数组:

a = [
[0, {:a=>"31", :b=>"21"}],
[1, {:a=>"32", :b=>"11"}],
[1, {:a=>"25", :b=>"19"}],
[0, {:a=>"12", :b=>"10"}]
]

我想按每行的第一个元素或散列的各种元素(行中的第二个元素)对其进行排序。

最佳答案

按数组中的第一项排序:

> a.sort_by{|x| x.first}
=> [[0, {:a=>"31", :b=>"21"}],
[0, {:a=>"12", :b=>"10"}],
[1, {:a=>"32", :b=>"11"}],
[1, {:a=>"25", :b=>"19"}]]

按哈希中的第一项排序:

> a.sort_by{|x| x.last.first}
=> [[0, {:a=>"12", :b=>"10"}],
[1, {:a=>"25", :b=>"19"}],
[0, {:a=>"31", :b=>"21"}],
[1, {:a=>"32", :b=>"11"}]]

或者您可以按散列的给定键排序:

> sort_key = :b
> a.sort_by{|x| x.last[ sort_key ]}
=> [[0, {:a=>"12", :b=>"10"}],
[1, {:a=>"32", :b=>"11"}],
[1, {:a=>"25", :b=>"19"}],
[0, {:a=>"31", :b=>"21"}]]

如果您想按第一个数组值排序,然后按散列中的第一个条目排序,作为次要搜索条件,答案是:

> a.sort_by{|x| [x.first, x.last.first]}
=> [[0, {:a=>"12", :b=>"10"}],
[0, {:a=>"31", :b=>"21"}],
[1, {:a=>"25", :b=>"19"}],
[1, {:a=>"32", :b=>"11"}]]

关于ruby-on-rails - 如何按 Ruby 中的不同元素对混合数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8160087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com