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!

Was it helpful?

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top