假设我有一个像这样的数组:
[
[1, 2, 3, 4],
[3, 4, 5, 6],
[4, 5, 6, 8]
]
我需要在它们之间获得共同的元素。我怎样才能做到这一点?
结果应为
common_elements([[1, 2, 3, 4], [3, 4, 5, 6], [4, 5, 6, 8]]) # => [4]
答案 0 :(得分:4)
[[1, 2, 3, 4], [3, 4, 5, 6], [4, 5, 6, 8]].reduce(:&) # => [4]
Array#&方法为您设置交集:
[1, 2, 3] & [2, 3, 4] # => [2, 3]
Enumerable#reduce方法可以使用以下操作组合给定数组中的值:
[1, 2, 3].reduce(:+) # => 6
答案 1 :(得分:0)
以下是另一种方法"手动lol" ...你们各自迭代嵌套数组Reader Integer A
然后迭代每个嵌套数组并使用include
ary [pos] .include?(x)在所有三个嵌套数组之间使用AND来查找相交值,它会很慢,但如果你想添加更多条件则很方便。
[[0],[1],[2]],
或简单地说,
user> ary = [ [1,2,3,4], [3,4,5,6], [4,5,6,8] ]
=> [[1, 2, 3, 4], [3, 4, 5, 6], [4, 5, 6, 8]]
user> ary.each { |f| f.each {|x|
puts "#{x}" if ary[0].include?(x) && ary[1].include?(x) &&
ary[2].include?(x) }}
4
4
4