假设我试图从数组中删除元素a = [1,1,1,2,2,3].如果我执行以下操作:
b = a - [1,3]
Run Code Online (Sandbox Code Playgroud)
然后我会得到:
b = [2,2]
Run Code Online (Sandbox Code Playgroud)
但是,我想要结果
b = [1,1,2,2]
Run Code Online (Sandbox Code Playgroud)
即我只删除减法向量中每个元素的一个实例,而不是所有情况.Ruby中有一种简单的方法可以做到这一点吗?
小智 74
你可能会这样做:
a= [1,1,1,2,2,3]
delete_list = [1,3]
delete_list.each do |del|
a.delete_at(a.index(del))
end
Run Code Online (Sandbox Code Playgroud)
结果:[1,1,2,2]
[1,3].inject([1,1,1,2,2,3]) do |memo,element|
memo.tap do |memo|
i = memo.find_index(e)
memo.delete_at(i) if i
end
end
Run Code Online (Sandbox Code Playgroud)