1. ホーム
  2. ruby

[解決済み] Rubyで複数の値でソートするには?

2023-05-20 19:24:47

質問

ハッシュの配列を持っています。

a=[{ 'foo'=>0,'bar'=>1 },
   { 'foo'=>0,'bar'=>2 },
   ... ]

配列をまず各ハッシュの'foo'でソートし、次に'bar'でソートしたいと思います。Googleが教えてくれたのは、この方法です。

a.sort_by {|h| [ h['foo'],h['bar'] ]}

しかし、これは私にArgumentError "ArrayとArrayの比較に失敗しました"を与えます。これは何を意味するのでしょうか?

どのように解決するのですか?

a.sort { |a, b| [a['foo'], a['bar']] <=> [b['foo'], b['bar']] }