input = {:a=>{:type=>"list", :values=>[{:type=>"b", :id=>"123"}, {:type=>"b", :id=>"456"}]}}
输出应如下
{:new_name=>"123,456"}
我尝试使用这样的注入。不确定要包含在块内的内容
input.tap do |e|
e[:a].try(:[], :values).inject({}) do |h, obj|
h[:new_name] = **
end
end
答案 0 :(得分:1)
你得到了:
input = {:a=>{:type=>"list",
:values=>[{:type=>"b", :id=>"123"},
{:type=>"b", :id=>"456"}
]
}
}
让我们先简化一下:
a = input[:a][:values]
#=> [{:type=>"b", :id=>"123"},
{:type=>"b", :id=>"456"}]
现在拉出我们需要的字符串:
b = a.map { |h| h[:id] }
#=> ["123", "456"]
最后,
{ "new_name" => b.join(',') }
#=> {"new_name"=>"123,456"}
把这些全部放在一起,
{ "new_name" => input[:a][:values].map { |h| h[:id] }.join(',') }
#=> {"new_name"=>"123,456"}
答案 1 :(得分:0)
{:new_name => input.values.first[:values].map{|hash| hash[:id]}.join(',')}
# => {:new_name=>"123,456"}
仅当您的输入哈希值始终具有相同的结构时才有效。