2014-06-30 26 views
-4

我在鐵軌此陣:Rails的數組排序

@array = [{'82'=>'1'}, {'81'=>'0'},{'32'=>'12'}] 

我如何可以排序它有一個結果呢?我希望有這樣的:

@array = [{'32'=>'12'}, {'82'=>'1'},{'81'=>'0'}] 

和下一個 - 我怎樣才能得到@array [0]散列密鑰(32)

這是散列的陣列,其中散列是{ 'USER_ID'=> 'counter'}

+0

您的示例不符合您對所需內容的描述。您作爲示例輸出提供的數組既不是按值排序的,也不是按鍵。 – Cezar

+0

那麼這個哈希中的「12」和「1」以及「0」是什麼? – Wordica

+0

如果有的話,它們按降序排列,無論你說什麼都是你想要的。 – Cezar

回答

0

這將值數組排序,按降序排列,到位:

array.sort! { |h1, h2| h2.values.first <=> h1.values.first } 

它也可以與sort_by!隨後reverse!完成。

array.sort_by! { |h| h.values } .reverse! 

然後,這些都會讓你的第一個值和第一項,分別爲:

array.first.values.first 
array.first.keys.first 
0

只需將keys.sort附加到數組的末尾即可。使用@ array.keys.sort

0
@array.sort { |x,y| x.keys.first <=> y.keys.first } 
0

嘗試使用Enumerable#sort_by,並Array#reverse!更改順序。

> @array.sort_by { |h| h.values.first }.reverse! 
=> [{"32"=>"12"}, {"82"=>"1"}, {"81"=>"0"}] 
+0

請儘量爲downvote提供一個簡短的理由! – vee