【问题标题】:comparing array of hashes比较哈希数组
【发布时间】:2011-03-24 07:35:36
【问题描述】:

我有哈希数组[{"a" => 1, "b" => 2}, {"a"=> 3, "b" => 4}, {"a" => 5, "b" => 6}]。现在我需要比较所有的哈希值,即将第一个哈希值与第二个和第三个哈希值进行比较,将第二个哈希值与第三个哈希值进行比较。如果有人有任何想法,请告诉我!

【问题讨论】:

  • 也许对其他人来说很明显,但您应该为您正在谈论的编程语言提供标签。

标签: arrays ruby-on-rails-3 hash ruby-1.9.2


【解决方案1】:

Rails 的类 Hash 带有 diff 方法,该方法返回哈希差异

{"a" => 1, "b" => 2}.diff("a"=> 3, "b" => 4) # { "a" => 1, "b" => 2 }

另请查看merge 方法,它可能对您的情况有用

【讨论】:

    【解决方案2】:

    在您的rails console 中试试这个:

    irb(main):001:0> array = [{"a" => 1, "b" => 2}, {"a"=> 3, "b" => 4}, {"a" => 5, "b" => 6}]
    irb(main):002:0> 0.upto(array.length-2) do |index|
    irb(main):003:1* (index+1).upto(array.length-1) do |index2|
    irb(main):004:2* puts "array[#{index}][a]-array[#{index2}][a] is : #{array[index]["a"]-array[index2]["a"]}"
    irb(main):005:2> puts "array[#{index}][b]-array[#{index2}][b] is : #{array[index]["b"]-array[index2]["b"]}"
    irb(main):006:2> end
    irb(main):007:1> end
    array[0][a]-array[1][a] is : -2
    array[0][b]-array[1][b] is : -2
    array[0][a]-array[2][a] is : -4
    array[0][b]-array[2][b] is : -4
    array[1][a]-array[2][a] is : -2
    array[1][b]-array[2][b] is : -2
    => 0
    

    这就是您可以比较它们的方式。我使用了 minus (-),您可能想使用 AND (&) 然后您必须在“-”的位置加上“&”符号否则你可以做任何你想做的操作...... :)

    【讨论】:

      【解决方案3】:

      rails 有一个不错的小 hash.diff 方法,可以很容易地移植到 Ruby 中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        • 1970-01-01
        相关资源
        最近更新 更多