2012-01-19 21 views

答えて

17

は、ここで私は考えることができる一つの方法です。

a = [1, 2, 3] 
b = [1, 4, 3] 

a.zip(b).map { |x, y| x == y } # [true, false, true] 
+0

downvoteをサポートしていますか? – Anurag

+2

代わりにブロックパラメータでデストラクションを行うのはなぜですか? –

+0

@JörgWMittag - ブロック内で配列引数の破壊が可能であることはわかりませんでした。 – Anurag

-2

このような何か試してみてください:

@array1 = ['a', 'b', 'c', 'd', 'e'] 
@array2 = ['d', 'e', 'f', 'g', 'h'] 
@intersection = @array1 & @array2 

@intersectionは今[ 'E'、 'D']でなければなりません。

交差点 - 2つの配列に共通する要素を含む新しい配列を返します。重複はありません。

あなたも、次のようなルビートリックのいくつかを試すことができます。

array1 = ["x", "y", "z"] 
array2 = ["w", "x", "y"] 
array1 | array2 # Combine Arrays & Remove Duplicates(Union) 
=> ["x", "y", "z", "w"] 

array1 & array2 # Get Common Elements between Two Arrays(Intersection) 
=> ["x", "y"] 


array1 - array2 # Remove Any Elements from Array 1 that are 
       # contained in Array 2 (Difference) 
=> ["z"] 
+1

.collect使用することができます。 –

2

あなたは正確に何をしたい取得するには、このような何かを行うことができます。

[1,2,3].zip([1,4,3]).map { |a,b| a == b } 
=> [true, false, true] 
2

これはトリックを行う必要があります。

array1.zip(array2).map { |a, b| a == b } 

ジッパーがそれぞれの要素からなる組の1つの配列を作成しますその位置の両方のアレイから。 2つの配列を並べて貼り合わせるとします。

3
a = [1,2,3] 
b = [1,4,3] 
a.zip(b).map { |pair| pair[0] <=> pair[1] } 
=> [0, -1, 0] 

要素ごとの比較zipルビーArrayオブジェクト方法によって達成されます。

a = [1,2,3] 
b = [1,4,3] 
a.zip(b) 
=> [[1, 1], [2, 4], [3, 3]] 
4

また、これはOPが望んで返さない

a.zip(b).collect {|x,y| x==y } 
=> [true, false, true] 
+5

'map'ではなく' collect'を使うことができますか?うわー! –

+0

'collect'は' map'の単なるエイリアスです。 [Array#collect](http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-collect) –

関連する問題