Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何向数组中添加多个元素?_Arrays_Ruby - Fatal编程技术网

Arrays 如何向数组中添加多个元素?

Arrays 如何向数组中添加多个元素?,arrays,ruby,Arrays,Ruby,我可以轻松地将一个元素添加到现有数组中: arr = [1] arr << 2 # => [1, 2] arr=[1] arr[1,2] 如何将多个元素添加到数组中 我想做一些类似于arr[1,2,3]利用.push 您还可以选择另一个数组的所有元素 second_arr = [2, 3] arr.push(*second_arr) # => [1, 2, 3] 但请注意如果没有*,它会将第二个数组添加到arr arr.push(second_arr) # =>

我可以轻松地将一个元素添加到现有数组中:

arr = [1]
arr << 2
# => [1, 2]
arr=[1]
arr[1,2]
如何将多个元素添加到数组中

我想做一些类似于
arr[1,2,3]

利用
.push
您还可以选择另一个数组的所有元素

second_arr = [2, 3]
arr.push(*second_arr)
# => [1, 2, 3]
但请注意如果没有
*
,它会将
第二个数组添加到
arr

arr.push(second_arr)
# => [1, [2, 3]]

劣质替代品:


您还可以链接
,也可以使用以下操作:


使用
+=
运算符:

arr = [1]
arr += [2, 3]
arr
# => [1, 2, 3]

有几种方法可以实现这一点:

array = [1, 2]

array += [3, 4] # => [1, 2, 3, 4]

# push: put the element at the end of the array
array.push([5, 6]) # =>  [1, 2, 3, 4, [5, 6]]
array.push(*[7, 8]) # => [1, 2, 3, 4, [5, 6], 7, 8]

array << 9 # => [1, 2, 3, 4, [5, 6], 7, 8, 9]

# unshift: put the element at the beginning of the array:
array.unshift(0) #=> [0, 1, 2, 3, 4, [5, 6], 7, 8, 9]
array=[1,2]
数组+=[3,4]#=>[1,2,3,4]
#推送:将元素放在数组的末尾
array.push([5,6])#=>[1,2,3,4,5,6]]
array.push(*[7,8])#=>[1,2,3,4,5,6,7,8]
数组[1,2,3,4,5,6,7,8,9]
#取消移位:将元素放在数组的开头:
array.unshift(0)#=>[0,1,2,3,4,5,6,7,8,9]
一些链接:

  • Ruby 1.9.3中的数组:
  • Ruby 2.0.0中的数组:

只需使用
.flatten

例如,如果您有这个数组

array = [1,2,3,4,5,6]
你这样做

array.push([123,456,789])
array.push([["abc","def"],["ghi","jkl"]])
你的绳子看起来像

array = [[1,2,3,4,5,6],[123,456,789],[["abc","def"],["ghi","jkl"]]]
你需要做的就是

array.flatten!
现在,您的阵列希望

array = [1,2,3,4,5,6,123,456,789,"abc","def","ghi","jkl"]

还有一点,要构建包含n次项的数组,可以使用splat(又名星号,
*
):

也可以使用splat重复多个图元:

arr = [123,'abc'] * 3      # => [123,'abc',123,'abc',123,'abc']
当然,您可以使用任意数组运算符,例如+:

arr = [true] * 3 + [false] # => [true, true, true, false]
我将其与
#sample
结合使用,以生成随机加权结果:

arr.sample                 # => true 3 out of 4 times
使用可以将数组添加到任何位置:

a = [1, 2, 3]
b = [4,5,6]
b.insert(0, *a)
=> [1, 2, 3, 4, 5, 6]

arr.push*另一个_arr
将添加另一个_arr
作为展平值(不会添加数组,而是每个值),使用
flant
不是首选方法。了解数组是如何连接的表明,使用
+
+=
可以完全避免使用
展平
<代码>展平
适用于那些我们没有生成的数组,或者我们懒得正确构建的数组。@Thetman您最好使用最后的
展平
而不是使用
推送
构建的数组,而不是每次串联都使用
+=
。使用后者,您将得到更多的垃圾和更多的复制。我还希望后者有O(n^2)时间,前者有O(n)时间;它创建了一个新数组,该数组是左右两侧的串联,并将其分配给
arr
@BarryKelly,你说得对。谢谢你的评论。惊讶的是我不得不走这么远才能找到这个。惊讶的是我不得不走这么远才能找到这个。我不知道你可以用多个参数来推动。这应该是最重要的答案。我不知道为什么会有人投反对票(显然是同一个人,因为它在两年没有任何进展的情况下,在同一天投了两次反对票)。它是准确的,回答了OP。我认为问题在于你没有回答OP提出的问题?他特别要求向现有数组添加值,您向他展示了如何创建一个包含重复n个元素的数组。
arr = [123,'abc'] * 3      # => [123,'abc',123,'abc',123,'abc']
arr = [true] * 3 + [false] # => [true, true, true, false]
arr.sample                 # => true 3 out of 4 times
a = [1, 2, 3]
b = [4,5,6]
b.insert(0, *a)
=> [1, 2, 3, 4, 5, 6]