arrays - 将所有数组值转换为哈希值?

标签 arrays ruby hash iteration

这里是初学者问题,抱歉:

我有一个名为 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/

相关文章:

iphone - iOS/Objective-C : SHA-1 and Base64

Javascript - 根据对象值对对象数组进行排序

arrays - 按递增顺序对 2d 点进行排序的算法

javascript - 如何将 jquery 数组值发送到 codeigniter Controller

ruby - 纯 ruby 类的验证

javascript - Python 和 JavaScript 中的哈希 sha1

javascript - 在我的数组的字符串值上使用 for 循环并取回字符串值

ruby - RGeo 两个 MultyPolygons 的并集返回 nil

ruby-on-rails - 为什么在测试 Controller 时无法访问 RSpec 中的 Controller 对象?

hash - 不同文件大小的哈希冲突与相同文件大小的哈希冲突的可能性相同吗?