在Ruby / Rails中合并数组

如何合并两个数组? 像这样的东西:

@movie = Movie.first() @options = Movie.order("RANDOM()").first(3).merge(@movie) 

但它不起作用。

@options我需要一个包含四个元素的数组,包括@movie

像这样?

 ⚡️ irb 2.2.2 :001 > [1,2,3] + [4,5,6] => [1, 2, 3, 4, 5, 6] 

但是你没有2个arrays。

你可以这样做:

 @movie = Movie.first() @options = Movie.order("RANDOM()").first(3).to_a << @movie 

这个问题有两个部分:

  1. 如何“合并两个arrays”? 只需使用+方法:

     [1,2,3] + [2,3,4] => [1, 2, 3, 2, 3, 4] 
  2. 怎么做你想要的? (事实certificate,这并没有合并两个数组。)让我们首先解决这个问题:

    @movieMovie模型的一个实例,您可以使用@movie.class.name进行validation。

    @options是一个Array ,您可以使用@options.class.name进行validation。

    您现在需要知道的是如何将新项目附加到数组(即,将@movie项目附加到@options数组)

    你用双铲子做到了:

     @options << @movie 

    这基本上与以下内容相同:

     [1,2,3] << 4 => [1,2,3,4] 

@movie在你的例子中不是一个数组,它只是一个电影的单个实例。 这应该可以解决您的问题:

 @options << @movie 

好吧,如果要在数组中合并元素,可以使用<<

 Eg: array = ["a", "b", "c"], element = "d" array << element => ["a", "b", "c", "d"] 

或者,如果您有两个数组并且需要重复,那么请根据您对可变性要求的要求使用+=或简单地+

 Eg: array_1 = [1, 2], array_2 = [2, 3] array_1 += array_2 => [1, 2, 2, 3] 

或者,如果您有两个数组并且想要忽略重复,那么请使用|=或简单地使用 :

 Eg: array_1 = [1, 2], array_2 = [2, 3] array_1 |= array_2 => [1, 2, 3]