ruby - 在每个值都是数组的哈希中,如何使用数组项查找键?

标签 ruby arrays hash

我有一个哈希。其中,每个键的值都是一个数组。我想测试一个值是否在数组之一中,如果是,它对应于哪个键。例如,假设我正在编写一个带有命令列表的命令行程序,每个命令都有一些昵称,如下所示:

commands = {
  :exit => ['exit', 'ex'],
  :start_car => ['start_engine', 'start'],
  :accelerate => ['speed_up', 'accelerate'],
  :help => ['help', '?']
}

因此,如果我想启动汽车,我可以输入 start_enginestart 两者都可以。

假设我需要一个函数来测试给定的字符串是否是命令的名称。如果不是,则返回 false。如果是这样,返回命令的名称,如下所示:

def is_command? string
  if # string is a nickname
    # return the key to which it belongs, i.e. 'ex' to :exit
  else
    return false
  end
end

我尝试浏览哈希和数组的函数列表,但我找不到任何东西,我什至无法开始考虑如何通过谷歌搜索这样的东西。非常欢迎任何帮助。

最佳答案

使用查找:

commands = {:exit => ['exit', 'ex'], :start_car => ['start_engine', 'start'], :accelerate => ['speed_up', 'accelerate'], :help => ['help', '?']}
commands.find { |key,value| value.include?( '?' ) }
> [:help, ["help", "?"]] 

关于ruby - 在每个值都是数组的哈希中,如何使用数组项查找键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24071715/

相关文章:

iphone - 在 iPhone OS 应用程序中使用 Ruby/Python 代码?

ruby-on-rails - 如何在 Rails 3.2 中使用 React 生态系统?

php - 在 PHP 中从二维数组创建日期数组

perl - 为什么在 Perl 中访问数组和散列元素时需要 $?

ruby - 是否可以从 Ruby 中的 String#split 函数返回卡住的、去重的字符串?

ruby - YAML.load 引发异常 : RangeError: bignum too big to convert into `long'

javascript - For 循环数组以查找该数组中的特定值。相反,我得到了整个数组

javascript - 在数组中传递 boolean 求值结果的语法?

java - 如何在 sqlite android 中存储散列密码

具有重复值的数组的 ruby​​ 数组到散列的散列