您如何将阵列移动到另一个数组,然后将第一个阵列留为空



我正在寻找一种将一个数组移动到另一个数组并清空的方法。在此示例中:

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

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

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

阵列的大小可能会有所不同,因此我需要一些特定于push/pop/pop/shift/unshift的元素。也许我没有正确使用这些。我做了以下操作,但想知道是否有更好的方法:

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

将为您提供一行想要的东西。slice!方法将从一个数组中获取所有内容,并将其添加到另一个数组中。

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

使用串联

使用数组# 将结果串联并分配给 a1 ,然后set a2 等于空数组。例如:

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

您可能会查看偏移或切片!方法。两者都将在删除阵列后返回一块数组。

如果您知道要移出数组正面的值数量,则可以使用:

a1.concat(a2.shift(2))

另外,如果要切除整个数组,则可以使用:

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

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

最新更新