我有一系列哈希[{"a" => 1, "b" => 2}, {"a"=> 3, "b" => 4}, {"a" => 5, "b" => 6}]
。现在我需要将所有哈希值相互比较,即将第一个哈希值与第二个和第三个哈希值进行比较,将第二个哈希值与第三个哈希值进行比较。如果有人有任何想法,请告诉我!
答案 0 :(得分:4)
Rails具有带有diff
方法的类Hash,它返回哈希差异
{"a" => 1, "b" => 2}.diff("a"=> 3, "b" => 4) # { "a" => 1, "b" => 2 }
另请参阅merge
方法,它可能对您的情况有用
答案 1 :(得分:1)
在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
这就是你如何比较它们。我使用了减号( - ),您可能需要使用 AND(&),然后您必须输入“&”在“ - ”处的符号,否则你可以做任何你想要对它执行的操作......:)
答案 2 :(得分:0)
rails有一个很好的小hash.diff方法,可以很容易地移植到Ruby
中