如何检查我的哈希是否有来自字符串数组的键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查我的哈希是否有来自字符串数组的键?相关的知识,希望对你有一定的参考价值。

使用Ruby,如果我有一个哈希,检查它是否有来自字符串数组的键的最快方法是什么?所以我能做到这一点

has_key = false
arr_of_strings.each do |str|
    if my_hash.has_key?(str)
        has_key = true
        break
    end
end

但对于这样一个简单的查询来说,这似乎是太多代码行。

答案
strings = ['a', 'b', 'c']
hash = {:a => 'apple', :b => 'bob', :d => 'thing'}

has_key = hash.keys.map(&:to_s) & strings  # ['a', 'b']
has_key.any? # true

一个类似的单线,hash.keys.detect { |key| strings.include?(key.to_s) }.nil?

另一答案

就这么简单:

arr_of_strings.any? {|s| my_hash.key?(s) }

或者,为巧妙但不易读的代码获得奖励积分:

arr_of_strings.any?(&my_hash.method(:key?)) # => true
另一答案

要查看数组和键是否有任何共同点,可以使用set intersection:

(arr & hash.keys).any?

以上是关于如何检查我的哈希是否有来自字符串数组的键?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查哈希中是不是存在特定值?

如何检查哈希中是不是存在特定键?

如何从哈希图中找到最高的键值

如何检查数组中是不是存在相同的键?

在哈希的键数组中追加元素

从数组 ruby​​ 生成哈希键和值