voglio ottenere l'unione/intersecano/differenza di due array di hash per esempio:Come ottenere l'unione/intersezione/differenza di due array di hash e ignorare alcune chiavi
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}]
tuttavia quando voglio mettere a confronto solo in base ai nomi e ignorare i secoli senza bisogno di rimuoverli dalle hash per esempio:
array1 = [{:name =>'Guy1', :age => 45},{:name =>'Guy2', :age => 45}]
array2 = [{:name =>'Guy1', :age => 46},{:name =>'Guy3', :age => 45}]
In questo caso non sto ottenendo i risultati che voglio b/c le età sono diverse.
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}]
C'è un modo per ottenere l'unione/intersezione/differenza e ignorare la chiave di età?
edit: per un esempio migliore:
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
Grazie in anticipo per l'aiuto!
Qual è il risultato atteso, soprattutto quale valore per ': age'? – sawa
Il risultato atteso sarebbe come se il ': age' non esistesse. –
il risultato atteso sarebbe lo stesso del primo esempio. –