我有一个字符串'tileBlock.tag.title'
和一个像这样的哈希:
{
"title"=>"headline",
"body"=>"body text",
"link"=>"#",
"tileBlock"=>{"title"=>"Home", "tag"=>{"title"=>"home", "id"=>45}, "active"=>true}
}
有没有办法将'tileBlock.tag.title'
转换为'object[:tileBlock][:tag][:title]
?
答案 0 :(得分:2)
您可以使用哈希的dig()
方法来检索您的值。您只需将字符串转换为键数组:
#Init values
my_string = 'tileBlock.tag.title'
my_hash = {
"title"=>"headline",
"body"=>"body text",
"link"=>"#",
"tileBlock"=>{
"title"=>"Home",
"tag"=>{"title"=>"home", "id"=>45},
"active"=>true
}
}
#The code
my_keys = my_string.split('.')
# => ["tileBlock", "tag", "title"]
my_result = my_hash.dig(*my_keys)
# => "home"
Hash#dig()
文档:http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig
答案 1 :(得分:1)
我不确定object
是什么,但如果它是嵌套的哈希/数组,并且您想使用object[:tileBlock][:tag][:title]
来调用s = 'tileBlock.tag.title'
,那么,
object.dig(*s.split(".").map(&:to_sym))
答案 2 :(得分:1)
您可以array1 = [product, php]
array2 = [product management, html]
使用result = [product managemenet]
。
Enumerable#inject