我有一个以下哈希数组
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"}
请协助
答案 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"}]