2016-03-06 101 views
0

我需要將哈希的密鑰名稱更改爲數字名稱。例如。將哈希中的所有密鑰名稱更改爲數字名稱(0,1,2,3 ...)

hash = {"0"=>["val", "val"], "1"=>["val"], "6"=>["val", "val"], "7"=>["val"]} 

hash = {"0"=>["val", "val"], "1"=>["val"], "2"=>["val", "val"], "3"=>["val"]} 

編號將從零開始,並繼續下去,直到散列結束。散列長度將是隨機的。

回答

4
new_hash = hash.values.map.with_index { |value, idx| [idx.to_s, value] }.to_h 
#=> {"0"=>["val", "val"], "1"=>["val"], "2"=>["val", "val"], "3"=>["val"]} 
-1
key = -1 

Hash[hash.map { |_,v| [(key = key.next).to_s, v] }] 

hash.map { |_,v| [(key = key.next).to_s, v] }.to_h