Ruby on rails 最小化嵌套循环

Ruby on rails 最小化嵌套循环,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,我有以下带有嵌套循环的代码。如何最小化循环 用户结果如下: users = [[35, 61, 62, 63, 64, 65, 66, 67, 68, 69, nil, 70, 71, 72, 73, 74, 75, 78, 79, 92, 94, 95, 154, 164, 292, 293, 294, 295, 314], [], [35], [], [35, 79, 88], []

我有以下带有嵌套循环的代码。如何最小化循环

用户
结果如下:

users = [[35, 61, 62, 63, 64, 65, 66, 67, 68, 69, nil, 70, 71, 72, 73,
          74, 75, 78, 79, 92, 94, 95, 154, 164, 292, 293, 294, 295, 314],
         [],
         [35],
         [],
         [35, 79, 88],
         [],
         [],
         [36, 35, 56, 78, 87, 95, 65],
         [63, 72, 78, 80, 81, 82, 84, 87, 90, 93, nil, 96, 111, 157, 159, 160, 271,
          272, 66, 295, 296, 297, 298, 299, 300, 301, 305, 307, 308, 71, 315],
         [],
         [79, 83, 85, 86, 89, 91, 161, 162, 163, 67, 294, 302, 303, 304, 306,
          309, 310, 311, 312, 313],
         [],
         [314],
         [314],
         []
        ]
这就是为什么我需要在每个元素中循环对象

数组
值为:

array = [309, 310, 305, 304, 90, 162, 78, 297, 296, 272, 271, 84, 91, 308,
         299, 79, 87, 298, 301, 163, 81, 72, 83, 111, 86, 313, 164, 300, 159,
         315, 160, 307, 82, 69, 312, 89
        ]
谢谢

0.upto(users.count).each do |i|
  users[i].each do |user_id|
    if array.include?(user_id)
      puts user_id
    end
  end
end

如果用户的每个子数组都没有重复的元素,那么下面的操作应该有效

users.each { |user| puts array & user }

如果用户的每个子数组都没有重复的元素,那么下面的操作应该有效

users.each { |user| puts array & user }

根据我的理解,您希望从
用户
数组
获取公共元素

首先,将
用户
数组
展平
使其成为单个数组。然后将其设置为
uniq
,这样一个id就不会重复
compact
将删除
nil
值。然后使用
数组
执行
操作。你得到了你的
结果

result = users.flatten.uniq.compact & array
现在如果要打印
结果

puts result

根据我的理解,您希望从
用户
数组
获取公共元素

首先,将
用户
数组
展平
使其成为单个数组。然后将其设置为
uniq
,这样一个id就不会重复
compact
将删除
nil
值。然后使用
数组
执行
操作。你得到了你的
结果

result = users.flatten.uniq.compact & array
现在如果要打印
结果

puts result

你想解决什么问题?我强烈怀疑你正在用这些循环做一些你应该用数据库查询来做的事情。集中精力澄清这个问题。你所说的“如何使循环最小化”是什么意思?。显示您所给出示例的预期结果。注意,我已经为这两个数组分配了变量。这样,读者就可以在答案和评论中引用这些变量,而无需定义它们。为什么你拒绝用编辑来澄清你的问题?你想解决什么问题?我强烈怀疑你正在用这些循环做一些你应该用数据库查询来做的事情。集中精力澄清这个问题。你所说的“如何使循环最小化”是什么意思?。显示您所给出示例的预期结果。注意,我已经为这两个数组分配了变量。这样,读者就可以在答案和评论中引用这些变量,而无需对它们进行定义。你为什么拒绝通过编辑来澄清你的问题?我想你的意思是
&
,而不是
&
。通过这种方式返回数组的值是Ruby数组的intersect方法。@AlexandreAngelim,谢谢注意。是的,
&
更可取。@CarySwoveland好的,我还添加了打印部分。“谢谢,”卡里斯沃夫兰说,“我也这么认为。这个问题还没有解决。但我想他想要这样的东西。如果OP真的想要,我会改的。再次感谢。我删除了我的评论,因为我误读了OPs代码,因为问题不清楚。我想你是指
&
而不是
&
。通过这种方式返回数组的值是Ruby数组的intersect方法。@AlexandreAngelim,谢谢注意。是的,
&
更可取。@CarySwoveland好的,我还添加了打印部分。“谢谢,”卡里斯沃夫兰说,“我也这么认为。这个问题还没有解决。但我想他想要这样的东西。如果OP真的想要,我会改的。再次感谢。我删除了我的评论,因为我误读了OPs代码,因为问题不清楚。我会删除这个评论,在你看到它之后。