如何将哈希值与数组值进行比较?

时间:2013-03-30 07:04:23

标签: ruby hash cucumber

我正在传递一个函数两个参数:

function_a(hash1, array1)

如果我在函数内打印每个参数的class.name(即hash1.class.name),则显示为:

Hash1:Hash & Array-1:Array

传递之前两个数据结构的成员是:

哈希-1:

{:cmd=>"-add set isteautoSet1 2013-04-02 23:00:00",
 :criteria=>"isteautoSet1 2013-04-02 23:00:00",
 :setname=>"isteautoSet1",
 :operation=>"add"}

阵列-1:

[{:setname=>"isteautoSet1",
  :numrules=>"0",
  :tests=>"0",
  :lastchanged=>"2013-03-30 06:35:40",
  :filtertype=>"summary",
  :expires=>"2013-04-02 23:00:00"},
 {:setname=>"set1",
  :filtertype=>["company"],
  :rulenum=>"1",
  :criteria=>"mydomain.com"},
 {:setname=>"set1",
  :filtertype=>["individual"],
  :rulenum=>"2",
  :criteria=>"yourdomain.com"}]

我在function_a的目标是:

使用array("setname" + " " + "expires")验证hash-1 - :criteria字段值的匹配。

当我进行比较时,我一直得到“无法将符号转换为整数(TypeError)”。看起来问题在于使用“each”方法访问数组内容。

1 个答案:

答案 0 :(得分:1)

如果我理解你的话,也许这适合你:

rules.each do |hash|
    if hash.has_key?(:setname)
        if hash[:setname].eql?(cmd_hash[:setname])
             puts "found value"
        end
    end
end

这不是最干净的方法,但它为启动提供了良好的基础。

祝你好运! :)