我有以下 Ruby 哈希键值对:
[
{
"trait_type"=>"Status",
"value"=>"Unbuilt",
"display_type"=>nil,
"max_value"=>nil,
"trait_count"=>4866,
"order"=>nil
}
]
Run Code Online (Sandbox Code Playgroud)
我需要检查的是以下键值对是否都存在:
{
"value"=>"Unbuilt",
"trait_type"=>"Status"
}
Run Code Online (Sandbox Code Playgroud)
本质上想要一些东西来达到...的效果
traits = [{"trait_type"=>"Status", "value"=>"Unbuilt", "display_type"=>nil, "max_value"=>nil, "trait_count"=>4866, "order"=>nil}]
filter_traits = {"value"=>"Unbuilt", "trait_type"=>"Status"}
traits.include? filter_traits
Run Code Online (Sandbox Code Playgroud)
如果您使用 ruby >= 2.3,则有一个奇特的新Hash >= Hash操作,其概念上类似于假设的contains?
使用你的traits数组:
trait = traits[0]
trait >= {"trait_type" => "Status", "value" => "Unbuilt"}
# => true
trait >= {"trait_type" => "Status", "value" => "Built"}
# => false
Run Code Online (Sandbox Code Playgroud)
所以你可以尝试这样的事情:
traits.select{|trait|
trait >= filter_traits
}.length > 0
# => true
Run Code Online (Sandbox Code Playgroud)