2012-05-01 7 views
2

私は2インスタンスはオブジェクトを持っている:@original_filesをしてversion2_filesは2つのインスタンスオブジェクトを比較し、見つける珍しい要素

@私は@original_filesで見つかりましたが、@ version2_filesにはない要素を取得します。

以下のコード:

<% @original_files.each do |original_file| %> 

    <% @version2_files.each do |ver2_file| %> 
    <% if original_file.name == ver2_file.name%> 
     <%= original_file.name %> is common to both sets 
     <% break %> 
     <% else %> 
    <% end %> 
    <% end %> 

<% end %> 

誰かが私だけ@original_filesで見つかった要素を見つける方法を見つけ出す手助けができれば、私はそれをお願い申し上げます。

ありがとうございました

答えて

5

これらは配列ですか? ...

@original_files - @version2_files 

ハッシュはdiffを使用できます。

@original_files.diff(@version2_files) 
+0

これらはハッシュ要素 – Kim

+0

です。編集を参照してください。 – danh

+0

FYIこのメソッドはdepricatedされています –

1

私は@original_filesとversion2_files @はハッシュされている、とあなたは

@original_files.keys - @version2_files.keys 
1

免責事項version2_files @にない@original_files内の要素を見つけるしたいことを意味するためにこれを理解する:ルビーへ新をハッシュ/配列がどのように正確に機能するかは知らないかもしれません。

@ danhさんの回答は、キーと値のペアを比較したい場合に適しています。しかし、2つのハッシュ値をその値に基づいて比較し、キーが重要でない場合は、diffが必要なものではない可能性があります。唯一originalなくversion2で見つかった要素の配列を返します

original.values - version2.values => [ ... ] 

:その場合は、あなたのような何かをするだろう。

また、thisthisが役立ちます。

関連する問題