在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
这个问题有两个部分:
-
如何“合并两个arrays”? 只需使用
+
方法:[1,2,3] + [2,3,4] => [1, 2, 3, 2, 3, 4]
-
怎么做你想要的? (事实certificate,这并没有合并两个数组。)让我们首先解决这个问题:
@movie
是Movie
模型的一个实例,您可以使用@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]