这里是初学者问题,抱歉:
我有一个名为 data 的数组。它由我从 CSV 映射出来的哈希数组组成:
[
{:status=>"new", :number=>"215", :subject=>"25", :case=>"First", :attachment=>"alpha, beta"},
{:status=>"old", :number=>"213", :subject=>"21", :case=>"Second", :attachment=>"alpha, beta"}
]
我想将哈希值发布到 API,但该 API 期望所有值都是数组(因为它们都可能包含多个值)。 如何将所有哈希值转换为数组? 预期结果如下:
[
{:status=>["new"], :number=>["215"], :subject=>["25"], :case=>["First"], :attachment=>["alpha", "beta"]}
{:status=>["old"], :number=>["213"], :subject=>["21"], :case=>["Second"], :attachment=>["alpha", "beta"]}
]
我知道我能做到:
hashed_data[0].map { |k, v| [ k,[v] ] }.to_h
但是我如何将其应用于数组中的每个散列?
在这种情况下,我无法直接调用 :attachment,因为它并不总是以相同的方式命名。
最佳答案
如果你想改变现有的数组,我会这样做:
array.each {|e| e.transform_values! {|value| Array(value)} }
#=> [{:status=>["25"], :number=>["215"], :case=>["First"], :attachment=>["alpha, beta"]},
# {:status=>["21"], :number=>["213"], :case=>["Second"], :attachment=>["alpha, beta"]}]
关于arrays - 将所有数组值转换为哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48262095/