从哈希数组中删除值的方括号

时间:2018-11-08 18:48:55

标签: ruby hash

我有一个以下哈希数组

A = [{"name" => ["xx"], "status" => ["true"]}, {"name" => ["yy"], "status" => ["true"]}

我尝试使用以下代码删除方括号

A.to_s.gsub("\\[|\\]", "")

也尝试使用代码

p A.map { |hash| hash.each_with_object({}) { |(k, v), hash| hash[k] = v.first } }

但无法正常工作。

如何删除方括号以获取以下输出

A = [{"name" => "xx", "status" => "true"}, {"name" => "yy", "status" => "true"}

请协助

1 个答案:

答案 0 :(得分:3)

由于它们是数组中的字符串,因此[]是Ruby所做的表示。尝试访问那些哈希中每个键值的第一个元素:

a = [{"name" => ["xx"], "status" => ["true"]}, {"name" => ["yy"], "status" => ["true"]}]
p a.map { |hash| hash.transform_values(&:first) }
# [{"name"=>"xx", "status"=>"true"}, {"name"=>"yy", "status"=>"true"}]

取决于您的Ruby版本,可能没有可用的transform_values。在这种情况下,简单的each_with_object可以类似地工作:

p a.map { |hash| hash.each_with_object({}) { |(k, v), hash| hash[k] = v.first } }
# [{"name"=>"xx", "status"=>"true"}, {"name"=>"yy", "status"=>"true"}]