如何通过将字符串附加到特定值来更改哈希数组
How to change an array of hashes by appending a string to a certain value
我想转换以下哈希数组:
[{:text=>"Code", :url=>"#code"}, {:text=>"Output", :url=>"#output"}]
通过将种子附加到 URL 值:
[{:text=>"Code", :url=>"#code1234"}, {:text=>"Output", :url=>"#output1234"}]
到目前为止我有这个代码:
- t( :"code.tab" ).each do | obj |
= obj.collect do | k, v |
- if k.to_s == "url"
- [ k, v + seed ].flatten
- else
- [ k, v ].flatten
这给了我:
[[:text, "Code"], [:url, "#code23324"]][[:text, "Output"], [:url, "#output23324"]]
我很接近,但我还没有想出如何展平并获得想要的结果。
我会尝试在数组上使用 map
并在散列上使用 merge
来解决这个问题:
>> a = [{:text=>"Code", :url=>"#code"}, {:text=>"Output", :url=>"#output"}]
>> a.map{|h| h.merge(url: h[:url] + '1234')}
=> [{:text=>"Code", :url=>"#code1234"}, {:text=>"Output", :url=>"#output1234"}]
或者,您可以更新代码,通过将每个子数组映射到散列来将结果转换为所需的形式:
>> b = [[:text, "Code"], [:url, "#code23324"]], [[:text, "Output"], [:url, "#output23324"]]
>> b.map(&:to_h)
=> [{:text=>"Code", :url=>"#code23324"}, {:text=>"Output", :url=>"#output23324"}]
我想转换以下哈希数组:
[{:text=>"Code", :url=>"#code"}, {:text=>"Output", :url=>"#output"}]
通过将种子附加到 URL 值:
[{:text=>"Code", :url=>"#code1234"}, {:text=>"Output", :url=>"#output1234"}]
到目前为止我有这个代码:
- t( :"code.tab" ).each do | obj |
= obj.collect do | k, v |
- if k.to_s == "url"
- [ k, v + seed ].flatten
- else
- [ k, v ].flatten
这给了我:
[[:text, "Code"], [:url, "#code23324"]][[:text, "Output"], [:url, "#output23324"]]
我很接近,但我还没有想出如何展平并获得想要的结果。
我会尝试在数组上使用 map
并在散列上使用 merge
来解决这个问题:
>> a = [{:text=>"Code", :url=>"#code"}, {:text=>"Output", :url=>"#output"}]
>> a.map{|h| h.merge(url: h[:url] + '1234')}
=> [{:text=>"Code", :url=>"#code1234"}, {:text=>"Output", :url=>"#output1234"}]
或者,您可以更新代码,通过将每个子数组映射到散列来将结果转换为所需的形式:
>> b = [[:text, "Code"], [:url, "#code23324"]], [[:text, "Output"], [:url, "#output23324"]]
>> b.map(&:to_h)
=> [{:text=>"Code", :url=>"#code23324"}, {:text=>"Output", :url=>"#output23324"}]