【问题标题】:Compare 2 instance objects and find uncommon elements比较 2 个实例对象并找到不常见的元素
【发布时间】:2012-05-01 15:49:28
【问题描述】:

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

谢谢

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    它们是数组?你可以减去...

    @original_files - @version2_files
    

    哈希可以使用diff。

     @original_files.diff(@version2_files)   
    

    【讨论】:

    • 仅供参考,此方法已被弃用
    【解决方案2】:

    我理解这意味着@original_files 和@version2_files 是散列,并且您想在@original_files 中查找不在@version2_files 中的元素

    @original_files.keys - @version2_files.keys
    

    【讨论】:

      【解决方案3】:

      免责声明: ruby​​ 新手,可能不知道哈希/数组是如何工作的。

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

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

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

      另外,this 和 this 可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-01
        • 2016-01-18
        相关资源
        最近更新 更多