比较2个实例对象并找到不常见的元素

时间:2012-05-01 15:49:29

标签: ruby-on-rails

我有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中的元素,我将不胜感激。

由于

3 个答案:

答案 0 :(得分:5)

他们是阵列?你可以减去......

@original_files - @version2_files

哈希可以使用diff

 @original_files.diff(@version2_files)   

答案 1 :(得分:1)

我理解这意味着@original_files和@ version2_files是哈希,并且你想在@original_files中找到不在@ version2_files中的元素

@original_files.keys - @version2_files.keys

答案 2 :(得分:1)

免责声明:对ruby不熟悉,可能不知道哈希/数组是如何正常工作的。

@ danh的答案是正确的,如果你想比较键/值对。但是,如果您只根据它们的值比较2个哈希值并且键不重要,则diff可能不是您所需要的。在这种情况下,您可以执行以下操作:

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

返回仅在original但不在version2中找到的元素数组。

此外,thisthis可能有所帮助。