在N个数组中查找公共值

时间:2018-08-20 15:14:41

标签: arrays ruby

我有<form (keydown.enter)="$event.preventDefault()"></form> 个数组,我想算出这些数组中是否有一个公共值。如果我知道数组的数量,我可以做类似的事情:

n

但是,如果您不知道数组的数量,则不可能。到目前为止,我已经提出了以下建议:

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

x = a & b & c

x == [2]

但是,这似乎不是很有效。有更好的方法吗?

1 个答案:

答案 0 :(得分:10)

  

但是,如果您不知道数组的数量,就不可能这样做。

实际上,Enumerable#reduce可以提供帮助:

[[1,2,3], [2,4,5], [2,6,7]].reduce(&:&) # => [2]

&:&看起来很有趣,但仅仅是:

[[1,2,3], [2,4,5], [2,6,7]].reduce { |memo, el| memo & el } # => [2]

或者也可以按照@Jagdeep的建议进行操作:

[[1,2,3], [2,4,5], [2,6,7]].reduce(:&) # => [2]