我有一系列哈希
x = [{:name=>'a', :value=1}, {:name=>'b', :value=2}, {:name=>'c', :value=3}]
和字符串数组
y = ["a", "c"]
如何根据x
从y
中排除元素?所以最后我有x = [ {:name=>'b', :value=2} ]
答案 0 :(得分:4)
x.reject {|h| y.include? h[:name]}
# => [{:name=>"b", :value=>2}]
注意:如果要修改原始对象,可以改用reject!
。
答案 1 :(得分:1)
虽然@Santhosh提供的答案是绝对正确的,但是在大型数组上,由于在每次迭代中在y
中进行查找,因此效率不高。那可能会更快:
xgr = x.group_by { |e| e[:name] }
x - y.map { |e| xgr[e] }.flatten
#⇒ [ {:name=>'b', :value=2} ]