【发布时间】:2018-06-24 00:44:52
【问题描述】:
这里是初学者问题,对不起:
我有一个名为 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,因为它不会总是以相同的方式命名。
【问题讨论】:
-
您的哈希值有两次状态键,它们不是有效的哈希值。这是你的真实情况吗?
-
@SebastianPalma,严格来说,它们是有效的(至少在 Ruby 2.4.1 中)
-
取决于什么是有效的,但是如果你对第一个哈希应用任何操作,期望结果也包含重复的键,那么结果将不是预期的。结果将包含重复键的最后定义 - 与以前的 Ruby 版本一样。
-
@SebastianPalma 啊废话。我的错误 - 它实际上是一个不同的键,双打。更改它以防止混淆,谢谢。
标签: arrays ruby hash iteration