私は2つの配列を持っている:2つの配列を要素ごとに比較するにはどうすればよいですか?
a == b
リターン:
[1,0,1]
など何か
a = [1,2,3]
b = [1,4,3]
は、私がこのような何かを行うことができ、そのようなことをRubyで要素ごとの比較方法はあります
[TRUE,FALSE,TRUE]
。
私は2つの配列を持っている:2つの配列を要素ごとに比較するにはどうすればよいですか?
a == b
リターン:
[1,0,1]
など何か
a = [1,2,3]
b = [1,4,3]
は、私がこのような何かを行うことができ、そのようなことをRubyで要素ごとの比較方法はあります
[TRUE,FALSE,TRUE]
。
は、ここで私は考えることができる一つの方法です。
a = [1, 2, 3]
b = [1, 4, 3]
a.zip(b).map { |x, y| x == y } # [true, false, true]
このような何か試してみてください:
@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"]
.collect使用することができます。 –
あなたは正確に何をしたい取得するには、このような何かを行うことができます。
[1,2,3].zip([1,4,3]).map { |a,b| a == b }
=> [true, false, true]
これはトリックを行う必要があります。
array1.zip(array2).map { |a, b| a == b }
ジッパーがそれぞれの要素からなる組の1つの配列を作成しますその位置の両方のアレイから。 2つの配列を並べて貼り合わせるとします。
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]]
また、これはOPが望んで返さない
a.zip(b).collect {|x,y| x==y }
=> [true, false, true]
'map'ではなく' collect'を使うことができますか?うわー! –
'collect'は' map'の単なるエイリアスです。 [Array#collect](http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-collect) –
downvoteをサポートしていますか? – Anurag
代わりにブロックパラメータでデストラクションを行うのはなぜですか? –
@JörgWMittag - ブロック内で配列引数の破壊が可能であることはわかりませんでした。 – Anurag