Ruby - 列表减去

Say*_*yuj 2 ruby arrays

我有两个清单

a = [1, 2, 3, 4, 1, 2]
b = a.uniq # b = [1, 2, 3, 4]

c = a - b
Run Code Online (Sandbox Code Playgroud)

结果得到了 c = []

我期待结果 c = [1, 2]

我怎么能得到这个?

Veg*_*ger 5

这是根据Array文档的预期结果.

如果你想获得在数组中有多次出现的值,你可以这样:

a.uniq.keep_if {|v| a.count(v) > 1}
Run Code Online (Sandbox Code Playgroud)

如果使用Ruby 1.8,keep_if则不可用,因此您需要使用以下内容:

a.uniq.delete_if {|v| a.count(v) == 1}
Run Code Online (Sandbox Code Playgroud)

(两种方法保持a完整)