我试图找到多个数组之间的交集值。
例如
code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]
所以结果是 2
我知道在 PHP 中你可以用 array_intersect 做到这一点
我希望能够轻松添加额外的数组,所以我真的不想使用多个循环
有任何想法吗 ?
谢谢,亚历克斯
我试图找到多个数组之间的交集值。
例如
code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]
所以结果是 2
我知道在 PHP 中你可以用 array_intersect 做到这一点
我希望能够轻松添加额外的数组,所以我真的不想使用多个循环
有任何想法吗 ?
谢谢,亚历克斯
如果你想要一个更简单的方法来处理未知长度的数组,你可以使用inject。
> 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]
Ruby 2.7 引入了Array#intersection方法来匹配更简洁的Array#&。
所以,现在,[1, 2, 3] & [2, 3, 4] & [0, 2, 6]
可以用更详细的方式重写,例如
[1, 2, 3].intersection([2, 3, 4]).intersection([0, 2, 6])
# => [2]
[1, 2, 3].intersection([2, 3, 4], [0, 2, 6])
# => [2]