我有n
个数组,想要确定这些数组中是否存在相同的值。如果我知道数组的数量,我可以这样做:
a = [1,2,3]
b = [2,4,5]
c = [2,6,7]
x = a & b & c
x == [2]
但是,如果您不知道数组的数量,则无法实现此操作。到目前为止,我想出了以下解决方案:
array_of_integers = [[1,2,3],[2,4,5]....]
values = []
array_of_integers.each_with_index do |array, index|
values = if index.zero?
array
else
values & array
end
end
# `values` will be an array of common values
然而,这似乎不是很高效。有更好的方法吗?
[[1,2,3],[2,4,5]]
的示例中,我得到了values #=> []
。 - Sagar Pandyareduce
更受推荐,但可以使用递归:def recurse(arr); arr.size == 1 ? arr.first: arr.first & recurse(arr.drop(1)); end; recurse([a,b,c]) #=> [2]
。 - Cary Swoveland