我有两个数组:
array1 = [1,2,2,4,5,6]
array2 = [2,1]
我如何获得
array3 = [2,4,5,6]
我已尝试array1 - array2
,但会返回[4,5,6]
。
答案 0 :(得分:5)
您所描述的是multiset。标准库中没有实现,但您可以使用multiset gem。
require 'multiset'
ms1 = Multiset.new([1, 2, 2, 4, 5, 6])
ms2 = Multiset.new([2, 1])
ms1 - ms2
#=> #<Multiset:#1 2, #1 4, #1 5, #1 6>
(ms1 - ms2).to_a
#=> [2, 4, 5, 6]
答案 1 :(得分:0)
您可以找到每个元素index
并删除该元素,如this answer所示:
array1 = [1,2,2,4,5,6]
array2 = [2,1]
array2.each { |obj| array1.delete_at(array1.index(obj) || array1.length) }
array1 #=> [2, 4, 5, 6]