如果对象仅存在于两个数组之一中则删除记录

问题描述 投票:0回答:1

我有两个数组,分别代表User表中的记录。

@server = [{ id: 1, name: "john" }, { id: 2, name: "Sarah" }, { id: 3, name: "George" }]
@client = [{ id: 1, name: "john" }, { id: 2, name: "Sarah" }]

我想运行一个检查另一个数组并删除其记录的函数,因为它们不再存在于@client中>

目前,我有一个相当长久的方法,该方法可以工作,但绝对不是最佳方法。

@server.each do |item|
  if @client.select{ |obj| obj[:id] == item.id }.length < 1
    User.find(item.id).delete
  end
end

此问题的最佳方法是什么?

我有两个数组,分别代表User表中的记录。 @server = [{id:1,name:“ john”},{id:2,name:“ Sarah”},{id:3,name:“ George”}] @client = [{id:1,name :“ john”},{id:2,名称:...

ruby-on-rails ruby ruby-on-rails-5
1个回答
0
投票

您本质上是在寻找所有常见的元素,而使用Array#&超级容易做到这一点:

© www.soinside.com 2019 - 2024. All rights reserved.