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/

相关文章:

php - 将复杂的多维数据从 API 保存到数据库中

ruby - "bundle install"错误

ruby-on-rails - rails 3.2.11 : Weird behaviour because of loading order of Controller and model

math - 链式哈希表查找的预期最坏情况时间复杂度?

ios - iOS 是否有一个唯一的设备 ID,我可以用它来加盐密码哈希?

java - java中获取用户输入的字符串

javascript - 页面刷新时随机图像显示顺序

java - Java发送图片到浏览器的方法

mysql - Ruby on Rails:解压缩(Zlib::Deflate)在一定时间后不起作用

hash - RAR3 哈希算法