Я хочу получить объединение/пересечение/разницу из двух массивов хэшей, например:
array1 = [{:name =>'Guy1', :age => 45},{:name =>'Guy2', :age => 45}]
array2 = [{:name =>'Guy1', :age => 45},{:name =>'Guy3', :age => 45}]
...
p array1 - array2
=> [{:name=>"Guy2", :age=>45}]
p array2 - array1
=> [{:name=>"Guy3", :age=>45}]
p array1 | array2
=> [{:name=>"Guy1", :age=>45}, {:name=>"Guy2", :age=>45}, {:name=>"Guy3", :age=>45}]
однако, когда я хочу сравнивать только на основе имен и игнорировать возраст, не удаляя их, например, из хэшей:
array1 = [{:name =>'Guy1', :age => 45},{:name =>'Guy2', :age => 45}]
array2 = [{:name =>'Guy1', :age => 46},{:name =>'Guy3', :age => 45}]
В этом случае я не получаю желаемых результатов, потому что возраст разный.
array1 - array2
=> [{:name=>"Guy1", :age=>45}, {:name=>"Guy2", :age=>45}]
array2 - array1
=> [{:name=>"Guy1", :age=>46}, {:name=>"Guy3", :age=>45}]
array1 | array2
=> [{:name=>"Guy1", :age=>45}, {:name=>"Guy2", :age=>45}, {:name=>"Guy1", :age=>46}, {:name=>"Guy3", :age=>45}]
Есть ли способ получить объединение/пересечение/разницу и игнорировать ключ возраста?
редактировать: для лучшего примера:
array1 = [{:name =>'Guy1', :age => 45},{:name =>'Guy2', :age => 45}]
array2 = [{:name =>'Guy1'},{:name =>'Guy3'}]
p array1 - array2
p array2 - array1
p array1 | array2
p array1 & array2
Заранее спасибо за помощь!
:age
? - person sawa   schedule 09.05.2014:age
не существовало. - person Mark Thomas   schedule 09.05.2014