检查两个数组之间的值

时间:2015-03-30 18:12:18

标签: ruby-on-rails

感觉标题总结得很好。我有两个大型数组,都包含id。

一个是old_list,一个是current_list。我想做的是:

  • 删除old_list中的所有值,这些值在current_list中不存在
  • 如果old_list中存在current_list中的值,则不执行任何操作
  • 如果current_list中的值为new,则创建它并将其添加到old_list

这被设置为每4小时更新一次的后台作业。因此,我希望看看自上次检查以来是否出现过任何新值,或者是否已将其删除。

以下是我目前所处的内容,该内容尚不完整:

    twitter.follower_ids("#{uid}").each do |f_id|
      # unless user already has follower id saved
      unless followers.map(&:follower_id).include?(f_id.to_s)
        followers.create do |follower|
          follower.follower_id = f_id
        end
      end
    end

1 个答案:

答案 0 :(得分:3)

您需要执行以下设置操作:

(old_list & current_list) | current_list

示例:

old_v = [1,2,43]
new_v = [1,11,21]
(old_v & new_v) | new_v # => [1, 11, 21]

Array#&Array#|