rails - 查找多个数组之间的交叉点

Ale*_*lex 68 ruby arrays ruby-on-rails array-intersect

我试图找到多个数组之间的交集值.

例如

code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]
Run Code Online (Sandbox Code Playgroud)

结果将是2

我知道在PHP中你可以用array_intersect做到这一点

我希望能够轻松添加额外的数组,所以我真的不想使用多个循环

有任何想法吗 ?

谢谢,亚历克斯

Anu*_*rag 111

使用用于集合交集的数组&方法.

例如:

> [1,2,3] & [2,3,4] & [0,2,6]
=> [2]
Run Code Online (Sandbox Code Playgroud)

  • @Cyle三向相交结果中的任何元素都应存在于所有三个操作数中。参见http://en.wikipedia.org/wiki/Intersection_(set_theory) (2认同)

Fot*_*ios 46

如果您想要一种更简单的方法来使用未知长度的数组来执行此操作,则可以使用注入.

> arrays = [code1,code2,code3]
> arrays.inject(:&)                   # Ruby 1.9 shorthand
=> [2]
> arrays.inject{|codes,x| codes & x } # Full syntax works with 1.8 and 1.9
=> [2]
Run Code Online (Sandbox Code Playgroud)