2009-11-09 67 views

回答

0

你希望他們在什麼順序?您不應該期望它們處於插入順序。從docs for Hash

在其中由任一鍵或值遍歷散列 可能看起來 任意的,並且通常不會在插入順序 順序。

如果您需要按特定順序排列,您只需從鍵/值中確定(例如按字母順序排列屬性名稱),則需要明確應用該排序。

1

排序哈希的常用方法是按鍵或值。看看這裏:

hash.sort

更復雜的各種但是可以利用飛船操作

2
h = Hash[:x,123,:a,553,:d,949,:e,5321] 
=> {:e=>5321, :x=>123, :a=>553, :d=>949} 
h.sort { |x,y| x[0].to_s <=> y[0].to_s } 
=> [[:a, 553], [:d, 949], [:e, 5321], [:x, 123]] 
4

紅寶石1.8的散列被全美基礎不是插入順序。隨着紅寶石1.9,他們會。

但是,rails提供了替代方案,類OrderedHash

my_hash = ActiveSupport::OrderedHash.new 
my_hash[:key] = 'value' 
my_hash[:second_key] = 'second value' 

此散列其實這種格式的數組:

[[:key, 'value'], [:second_key, 'second value']] 

的條目保持在你插入的順序。
你可以像使用其他散列一樣訪問它們。

+0

試過這個沒有運氣。它仍然隨機顯示。使用Ruby 1.8.7。 – Jeffrey 2009-11-09 18:45:59