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 のみで見つかった要素を見つける方法を誰かが見つけてくれると助かります。

ありがとう

4

3 に答える 3

5

それらは配列ですか?減算できます...

@original_files - @version2_files

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

 @original_files.diff(@version2_files)   
于 2012-05-01T15:52:18.793 に答える
1

これは、@original_files と @version2_files がハッシュであり、@version2_files にはない @original_files の要素を見つけたいという意味だと理解しています。

@original_files.keys - @version2_files.keys
于 2012-05-01T15:59:11.263 に答える
1

免責事項: ruby​​ は初めてで、ハッシュ/配列が正確にどのように機能するかを知らない可能性があります。

キーと値のペアを比較したい場合は、@ danhの答えが正しいです。ただし、値のみに基づいて 2 つのハッシュを比較しており、キーが重要でdiffない場合は、必要なものではない可能性があります。その場合、次のようにします。

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

originalでのみ検出され、 では検出されない要素の配列を返しますversion2

また、これこれが役立つかもしれません。

于 2012-05-01T19:56:42.550 に答える