如何在散列中找到值不等于给定值的第一个键?给定以下哈希值 #container {
display:none;
}
@media (max-width: 47em) {
#container {
display: block;
}
}
,
100
我想找h = { "a" => 100, "b" => 100, "c" => 800, "d" => 500 }
。
答案 0 :(得分:5)
你可以这样做:
no_match_value = 100
h.find { |k,v| v != no_match_value }.first #=> "c"
查找散列中特定位置的键或值是不寻常的,但是(自Ruby v1.9起)你可以这样做。排序由密钥插入顺序确定。直到v1.9,没有排序散列键的概念,就像没有排序集合的元素一样。一些Rubiests认为关键的排序是异端邪说;包括我在内的其他人已经找到了很好的用途。
答案 1 :(得分:1)
您可以使用select
Hash[*h.select {|_, v| v != 100}.first]
#=> {"c"=>800}
如果没有匹配,则返回空哈希{}
。
如果没有Hash[]
部分,它将返回一个包含键和值的数组。
答案 2 :(得分:1)
你可以这样做:
h = { "a" => 100, "b" => 100, "c" => 800, "d" => 500 }
h.reject!{|k,v| v == 100}
# h = {"c"=>800, "d"=>500}
结果散列将包含所有键/值对,其中值不是100。
答案 3 :(得分:0)
假设您要查找密钥,以下代码将起作用:
h = { "a" => 100, "b" => 100, "c" => 800, "d" => 500 }
result = h.detect{ |k,v| v != 100 }.first