我希望从两个散列数组中获取并集、交集和差集,例如:
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}]
有没有一种方法可以获取并忽略 age 键的 union/intersect/difference?
编辑:为了更好地说明:
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
的值是多少? - sawa:age
不存在一样。 - Mark Thomas