首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby遍历两个对象并检查两个对象中是否存在某种东西

Ruby遍历两个对象并检查两个对象中是否存在某种东西
EN

Stack Overflow用户
提问于 2021-08-05 15:12:07
回答 2查看 46关注 0票数 1

我有两个对象:网关和消息,我想检查网关中每个网关的contact_id是否等于消息中的每个消息中的contact_id :如果contact_ids相等,我想在gateways对象继续使用另一个字段;我考虑这样做:

代码语言:javascript
复制
for gateway in gateways
  for message in messages
    if gateway.contact_id == message.contact_id 
      someRandomArray.push(gateway.files)
    end
  end
end

但是,有比双for循环更好的方法吗?它看起来是错误的。也许是用地图还是选择?不管我怎么努力都找不出答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-05 15:32:47

可以将所有邮件联系人ID保存在一个集合中,然后在网关上循环以检查网关的联系人ID是否在该集合中。

代码语言:javascript
复制
all_message_contact_ids = Set.new messages.map {|message| message.contact_id}
gateways.each do |gateway|
  if all_message_contact_ids.include? gateway.contact_id
    someRandomArray.push(gateway.files)
  end
end
票数 1
EN

Stack Overflow用户

发布于 2021-08-06 00:58:14

你可以这样做:

代码语言:javascript
复制
message_contact_ids = messages.map(&:contact_id)
selected_gateways = gateways.select{ |gw| gw.contact_id.in?(message_contact_ids) }

然后,您可以使用selected_gateways来调用任何您喜欢的字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68669226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档