Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中比较数组并删除重复项?_Ruby_Arrays_Compare_Duplicates - Fatal编程技术网

在Ruby中比较数组并删除重复项?

在Ruby中比较数组并删除重复项?,ruby,arrays,compare,duplicates,Ruby,Arrays,Compare,Duplicates,比较多个阵列并删除重复项的最简单方法是什么 所以(在这种情况下,数组中的数组) …将出现(优先顺序为数组a、b、c、d) 将所有阵列放在一个大阵列中: a = [[[2, 1], [3, 3], [7, 2], [5, 6]], [[2, 1], [6, 7], [9, 9], [4, 3]], [[2, 1], [1, 1], [2, 2], [9, 9]], [[2, 1], [9, 9], [2, 2], [3, 1]]] 您可以通过以下方式实现您想要的: a.inject([]) do

比较多个阵列并删除重复项的最简单方法是什么

所以(在这种情况下,数组中的数组)

…将出现(优先顺序为数组a、b、c、d)


将所有阵列放在一个大阵列中:

a = [[[2, 1], [3, 3], [7, 2], [5, 6]],
[[2, 1], [6, 7], [9, 9], [4, 3]],
[[2, 1], [1, 1], [2, 2], [9, 9]],
[[2, 1], [9, 9], [2, 2], [3, 1]]]
您可以通过以下方式实现您想要的:

a.inject([]) do |acc, pairs|
  acc << pairs.uniq.reject{|pair| acc.flatten(1).member?(pair)}
end
它只是一个或减法,你可以这样写。运算符重载可能是一种幸事:)

a
就是这样

a
[[2, 1], [3, 3], [7, 2], [5, 6]]

b = b - a
[[6, 7], [9, 9], [4, 3]]

c = c - b - a # or c - (a + b)
[[1, 1], [2, 2]]

d = d - c - b - a # or d - (a + b + c)
[[3, 1]]

这是如何返回b1想要的结果的?例如,通过将结果分配给
a、b、c、d
。你和Anurag都给出了四个阵列的答案。我只是概括了答案,我认为这样更实用,比我的方法更优雅
a.inject([]) do |acc, pairs|
  acc << pairs.uniq.reject{|pair| acc.flatten(1).member?(pair)}
end
a.inject([]) do |acc, pairs|
  acc << (pairs - (acc.inject(&:+) || []))
end
a
[[2, 1], [3, 3], [7, 2], [5, 6]]

b = b - a
[[6, 7], [9, 9], [4, 3]]

c = c - b - a # or c - (a + b)
[[1, 1], [2, 2]]

d = d - c - b - a # or d - (a + b + c)
[[3, 1]]