Search code examples
arraysruby-on-rails-3hashruby-1.9.2

comparing array of hashes


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... :)