从嵌套数组中删除重复项

bee*_*lez 3 ruby arrays duplicates

我有一个数组,其中包含特定顺序的数字.我想从嵌套数组中删除重复项,但是存在层次结构:如果数组出现在数组的较低索引中,请删除数组链中的所有重复项.

示例:nums = [[10,6,14],[6],[10,6,9],[10,13,6],[10,13,6,9,16],[10,13] ]

nums [0]包含[10,6,14]因此,任何后续提及的10,6,14应该从链中的其他数组中删除,这意味着nums [2]应该删除10,6并且只剩下9.

我在使用嵌套循环时遇到麻烦,任何Ruby向导都可以帮忙吗?

The*_*heo 10

这应该这样做:

input = [[10, 6, 14], [6], [10, 6, 9], [10, 13, 6], [10, 13, 6, 9, 16], [10, 13]]
seen = []
output = input.map do |numbers|
  new = numbers.uniq - seen
  seen += new
  new
end
# => output is [[10, 6, 14], [], [9], [13], [16], []]
Run Code Online (Sandbox Code Playgroud)

如果要删除输出中的空列表,只需

output.reject!(&:empty?)
Run Code Online (Sandbox Code Playgroud)