我有一個散列數組,它應該相當簡單地進行排序,但是由於我對ruby非常陌生,並且仍然在查看文檔,所以我遇到了問題,鍵值組合,但需要根據多個鍵值進行排序。在紅寶石中使用自定義比較器對散列進行排序
[{:attr1 => 3, :attr2 => 'test', attr3 => 'test2'},
{:attr1 => 1, :attr2 => 'test', attr3 => nil},
{:attr1 => 1, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 2, :attr2 => 'test', attr3 => 'test3'}]
所以我想根據自定義規則對其進行排序。自定義規則將首先看看attr1
並按照降序排序。
如果有相同的attr1
值,但其中attr3
是nil
,那麼可以將其排在最後一位。
所以我想我需要創建自定義比較器,或不。我怎樣才能以最少的痛苦做到這一點?
如果這是進行排序會是這樣的:
[{:attr1 => 3, :attr2 => 'test', attr3 => 'test2'},
{:attr1 => 2, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 1, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 1, :attr2 => 'test', attr3 => nil}
]
什麼是'attr3'?您必須在使用它們之前定義局部變量或方法。 – sawa