comparing array of hashes
-
29-10-2019 - |
Question
I have array of hashes [{"a" => 1, "b" => 2}, {"a"=> 3, "b" => 4}, {"a" => 5, "b" => 6}]
. Now I need to compare all the hashes with each other, ie, compare 1st hash with 2nd and 3rd hash, and 2nd with 3rd hash. If anybody has any idea, please let me know!
Solution
Try this in your 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 that's how you can compare them. I've used minus (-), you may want to use AND (&) then for that you have to put "&" symbol at the place of "-" else you can do whatever operation you wants to perform on it... :)
OTHER TIPS
Rails has class Hash with diff
method which returns the hash difference
{"a" => 1, "b" => 2}.diff("a"=> 3, "b" => 4) # { "a" => 1, "b" => 2 }
Look also at merge
method, it could be useful in your case
rails has a nice little hash.diff method that can be easily ported into Ruby