我正在寻找一种方法将一个阵列移动到另一个阵列并清空它。在这个例子中:
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]
答案 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指的是第一个元素到最后一个元素。