2011-11-13 56 views
0

我想從一個散列返回最低值的ID名稱:紅寶石:返回最低變量

{var1:345 , var2:764 , var3:126 }.return_lowest_value_id => "var3" 

什麼是最優雅的紅寶石的方式,而不IF語句來做到這一點?

+5

爲什麼你關心的變量名,而比價值? – delnan

+0

它是var值的「id」。也許這需要一個哈希?例如: '{var1:345,var2:764,var3:126} .return_lowest_value_id =>「var3」' –

+0

這是一個常見的初學者問題,它確實不是您需要做的事情。不要將代碼設計爲依賴於變量名稱。 –

回答

5

在使用散列的情況下,你可以試試這個:

{var1:345 , var2:764 , var3:126 }.sort_by { |k, v| v }.first[0] # => :var3 

作爲另一種選擇,你可以使用min_by方法:

{var1:345 , var2:764 , var3:126 }.min_by { |k, v| v }[0] # => :var3 
+0

工程就像一個魅力!謝謝! –

+0

基蘭,如果有兩個或更多的變量具有相同的最低值,你會想要什麼樣的行爲? –

+0

他們可以選擇行中的第一個,只要有一個返回 –