1
我有散列排除基於從散元素在陣列
x = [{:name=>'a', :value=1}, {:name=>'b', :value=2}, {:name=>'c', :value=3}]
數組和字符串數組從x
y = ["a", "c"]
我怎麼能排除元素基於y
?所以在最後我有x = [ {:name=>'b', :value=2} ]
我有散列排除基於從散元素在陣列
x = [{:name=>'a', :value=1}, {:name=>'b', :value=2}, {:name=>'c', :value=3}]
數組和字符串數組從x
y = ["a", "c"]
我怎麼能排除元素基於y
?所以在最後我有x = [ {:name=>'b', :value=2} ]
x.reject {|h| y.include? h[:name]}
# => [{:name=>"b", :value=>2}]
注意:如果要修改原來的對象,你可以使用reject!
代替。
雖然@Santhosh提供的答案是絕對正確的,但在巨大的陣列上,由於在每次迭代中都在y
中進行查找,效率不高。這可能會更快:
xgr = x.group_by { |e| e[:name] }
x - y.map { |e| xgr[e] }.flatten
#⇒ [ {:name=>'b', :value=2} ]