找到数组的交集

时间:2013-04-24 00:21:50

标签: ruby-on-rails ruby arrays

我在制作一个找到两个数组交集的简单表单时遇到了麻烦。最终目标是找到两个电子邮件阵列的交集,但现在我只是用整数测试。一切都在控制器中工作,如果我在视图中硬编码数组,我得到正确的结果。以下是我的代码

Rails控制台,一切都是犹太洁食:

1.9.3p374 :011 > _a
 => [1, 2, 3, 4] 
1.9.3p374 :012 > _b
 => [1, 2, 1, 1, 1] 
1.9.3p374 :013 > c = _a & _b
 => [1, 2] 

当我尝试从表单传递相同的值时,我得到一个空数组结果(我将两个数组都传递到视图中以确保它们存在。

控制器:

  def intersect 
    @array1       = [params[:a]]
    @array2       = [params[:b]]
    @intersection = @array1 & @array2
  end

视图中的代码:

Array 1: <%= @array1 %> <br>
Array 2: <%= @array2 %><br>
Intersection: <%=  @intersection %>

浏览器中的结果:

Array 1: ["1,2,3,4,5"] 
Array 2: ["1,2,2,3,3"]
Intersection: []

因为我可以让这个工作硬编码我确定我正在做一些新鲜事!任何帮助都是不受欢迎的!

1 个答案:

答案 0 :(得分:9)

您的数组每个都包含一个元素,即字符串"1,2,3,4,5"。您可能需要一个包含5个元素的数组([1,2,3,4,5])。您可以通过逗号上的splitting数组来执行此操作:

@array1 = params[:a].split(',')
@array2 = params[:b].split(',')

@intersection = @array1 & @array2
#=> ["1", "2", "3", "4", "5"]