ruby - 二维数组 - 如何删除重复值但保持子数组分开

标签 ruby multidimensional-array filter duplicates

我想从二维数组中删除重复项,但我需要单独保留子数组。

数组:

a = [1,2,3,4]
b = [2,3,4,5]
c = [3,4,5,6]
d = [4,5,6,7]

newarray = [[1,2,3,4], [2,3,4,5], [3,4,5,6], [4,5,6,7]]

想要得到如下结果:

newarraynoduplicates = [[1,2,3,4], [5], [6], [7]]

我已经尝试了以下的东西

[a|b|c|d] => [[1, 2, 3, 4, 5, 6, 7]]
[a|b|c|d] =>  [1, 2, 3, 4, 5, 6, 7]

也试过

newarray.uniq! => nil!

最佳答案

最通用的方法是:

[[1,2,3,4], [2,3,4,5], [3,4,5,6], [4,5,6,7]].
  each_with_object([]) { |a, acc| acc << a - acc.flatten } 
#⇒ [[1, 2, 3, 4], [5], [6], [7]]

[[1,2,3,4], [2,3,4,5], [3,4,5,6], [4,5,6,7]].
  reduce([]) { |acc, a| acc << a - acc.flatten }
#⇒ [[1, 2, 3, 4], [5], [6], [7]]

关于ruby - 二维数组 - 如何删除重复值但保持子数组分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429704/

相关文章:

ruby - 你如何使用拆分和扫描来解析 ruby​​ 中的 URI?

php - 我需要的数组排列

python - 使用 Pandas 从另一个数据框中的信息过滤数据框

JavaScript - 删除两个数组之间的多个相同值

ruby-on-rails - 这个 Ruby 类中的委托(delegate)方法如何工作?

ruby-on-rails - 为什么表达式 "a, b = 5"在 Ruby 中将 a 设置为 5,而将 b 设置为 nil?

Ruby Object#send 与否定相等

PHP从多维数组中删除重复值并完全唯一

Java读取文件并写入数组

filter - Django haystack 缩小,字段之间使用 OR 运算符