使用Ruby,如果我有一个哈希,检查它是否有来自字符串数组的键的最快方法是什么?所以我可以做到这一点
url
但对于如此简单的查询,似乎有太多代码行。
答案 0 :(得分:5)
这很简单:
arr_of_strings.any? {|s| my_hash.key?(s) }
或者,为巧妙但不易读的代码获得奖励积分:
arr_of_strings.any?(&my_hash.method(:key?)) # => true
答案 1 :(得分:3)
要查看数组和键是否有任何共同点,可以使用set intersection:
(arr & hash.keys).any?
答案 2 :(得分:1)
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?