80

複数の配列間の交差値を見つけようとしています。

例えば

code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]

したがって、結果は2になります

PHPでは、array_intersectを使用してこれを実行できることを知っています

配列を簡単に追加できるようにしたかったので、複数のループを使用したくありません

何か案は ?

ありがとう、アレックス

4

3 に答える 3

125

セット交差用の配列のメソッドを使用します。

例えば:

> [1,2,3] & [2,3,4] & [0,2,6]
=> [2]
于 2010-07-07T17:51:48.283 に答える
53

長さが不明な配列の配列を使用してこれを行う簡単な方法が必要な場合は、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]
于 2013-02-12T19:50:48.157 に答える
2

Array#intersection(Ruby 2.7+)

Ruby 2.7では、より簡潔なArray#&に一致するArray#intersectionメソッドが導入されました。

したがって、今で[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]
于 2020-04-13T22:16:01.473 に答える