2013-04-18 97 views
2

我有散列數組:在哈希替換一個匹配值與另一

arr = [ 
    {:key1=>"one", :key2=>"two", :key3=>"three"}, 
    {:key1=>"four", :key2=>"five", :key3=>"six"}, 
    {:key1=>"seven", :key2=>"eight", :key3=>"nine"} 
] 

和我想搜索通過並用"replaced"如果:key = "one"取代的:key1值。

得到的數組將然後閱讀:

arr = [ 
    {:key1=>"replaced", ;key2=>"two", :key3=>"three"}, 
    {:key1=>"four", ;key2=>"five", :key3=>"six"}, 
    {:key1=>"seven", ;key2=>"eight", :key3=>"nine"} 
] 

任何人都可以點我在正確的方向?

回答

1

嘗試使用下面的代碼,看它是否解決您的問題

arr.each{|item| item[:key1] = "replaced" if item[:key1]=="one" 
+0

十分感謝 - 有一個花括號失蹤,但一個真正有用和快速的回​​應謝謝 –

0
arr = [ 
    {:key1=>"one", :key2=>"two", :key3=>"three"}, 
    {:key1=>"four", :key2=>"five", :key3=>"six"}, 
    {:key1=>"seven", :key2=>"eight", :key3=>"nine"} 
] 

p arr.each {|x| x[:key1] = "replaced" if x.assoc(:key1).include? "one"} 

p arr.each {|x| x[:key1] = "replaced" if x.values_at(:key1) == "one"} 

輸出:

[{:key1=>"replaced", :key2=>"two", :key3=>"three"}, {:key1=>"four", :key2=>"five", :key3=>"six"}, {:key1=>"seven", :key2=>"eight", :key3=>"nine"}] 
相關問題