查找哈希数组中具有空值的所有键

Вал*_*аев 0 ruby

如何找到哈希数组中具有空值或特定值的所有键?

hash.key(value)仅返回 1 个键...我可以使用each/map 方法分割散列或循环散列,但我不喜欢该解决方案。

Gag*_*ami 5

例子 :

> hash = {:a => 1, :b =>nil, :c =>4, :d => "", :e => 5}
> selected_values = [1,4,5]
Run Code Online (Sandbox Code Playgroud)

选择空值的键:

> hash.select{|_,v| v.nil? || v == ""}.keys
#=> [:b, :d]
Run Code Online (Sandbox Code Playgroud)

选择特定值的键:

解决方案一:

> hash.select{|k,v| selected_values.include?(v)}.keys
#=> [:a, :c, :e]
Run Code Online (Sandbox Code Playgroud)

解决方案2:

> matcher = ->(key,value) { selected_values.include?(value) }
> hash.select(&matcher).keys
#=> [:a, :c, :e]
Run Code Online (Sandbox Code Playgroud)

  • @joost:它支持 Rails,而不是普通的 ruby​​,并且有问题的“rails”未标记 (2认同)