如何将阵列移动到另一个阵列并将第一个阵列留空?

时间:2014-02-02 03:21:52

标签: ruby arrays merge

我正在寻找一种方法将一个阵列移动到另一个阵列并清空它。在这个例子中:

a1 = [1,2]
a2 = [3,4]

我想将a2添加到a1然后将a2添加为空。我希望结果看起来像:

a1 # => [1, 2, 3, 4]
a2 # => []

数组的大小可能会有所不同,所以我需要一些不特定于某个元素的东西,比如push / pop / shift / unshift。或者我可能没有正确使用这些。我做了以下,但想知道是否有更好的方法:

a1.concat(a2)
a2.clear
a1 # => [1, 2, 3, 4]
a2 # => [3, 4]

3 个答案:

答案 0 :(得分:3)

a1.concat(a2.slice!(0..-1))

会在一行中给你你想要的东西。 slice!方法将从一个数组中获取所有内容,concat将其添加到另一个数组中。

a1 = [1,2]
a2 = [3,4]
a1.concat(a2.slice!(0..-1)) # => [1, 2, 3, 4] 
a2 # => [] 

答案 1 :(得分:1)

使用连接

使用Array#+连接数组并将结果分配给 a1 ,然后将 a2 设置为等于空数组。例如:

a1  = [1,2]
a2  = [3,4]
a1 += a2
a2  = []

a1
# => [1, 2, 3, 4]
a2
# => []

答案 2 :(得分:0)

您可能会看到班次或切片!方法。删除后,两者都将返回一个数组块。

如果您知道要从阵列前面移开的值的数量,则可以使用:

a1.concat(a2.shift(2))

或者,如果你想切出整个数组,这可行:

a1.concat(a2.slice!(0..-1))

范围0 ..- 1指的是第一个元素到最后一个元素。