2

我有 2 个实例对象:@original_files 和 @version2_files

我想检索在@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 是散列,并且您想在@original_files 中找到不在@version2_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 回答