如何将一个数组分割成不同大小的数组并将它们组合起来?
How do I slice an array into arrays of different sizes and combine them?
我想要像下面的伪代码一样简单的东西:
ar = [4,5,6,7,8,9]
last = ar.length-1
s = ar[0, 1..3, last] #fake code
puts s
预期输出没有8:
4,5,6,7,9
错误:
bs/test.rb:12:in `[]': wrong number of arguments (3 for 2) (ArgumentError)
我知道它只能接受两个参数。有没有一种简单的方法可以得到我需要的东西?
你快搞定了,你只是使用了错误的方法,你应该使用 Array#values_at
而不是 Array#[]
:
ar.values_at(0, 1..3, -1)
# => [4, 5, 6, 7, 9]
还要注意,在 Ruby 中,索引 "wrap around",因此 -1
始终是最后一个元素,-2
是倒数第二个,依此类推。
你也可以这样做 -
ar = [4,5,6,7,8,9]
arr = []
arr << ar[0..0] #arr[0] will return a single value but ar[0..0] will return it in array.
arr << ar[1..3]
arr << ar[-1..-1]
在打印时 arr
它将给出以下输出 -
[[4], [5, 6, 7], [9]]
我想要像下面的伪代码一样简单的东西:
ar = [4,5,6,7,8,9]
last = ar.length-1
s = ar[0, 1..3, last] #fake code
puts s
预期输出没有8: 4,5,6,7,9
错误:
bs/test.rb:12:in `[]': wrong number of arguments (3 for 2) (ArgumentError)
我知道它只能接受两个参数。有没有一种简单的方法可以得到我需要的东西?
你快搞定了,你只是使用了错误的方法,你应该使用 Array#values_at
而不是 Array#[]
:
ar.values_at(0, 1..3, -1)
# => [4, 5, 6, 7, 9]
还要注意,在 Ruby 中,索引 "wrap around",因此 -1
始终是最后一个元素,-2
是倒数第二个,依此类推。
你也可以这样做 -
ar = [4,5,6,7,8,9]
arr = []
arr << ar[0..0] #arr[0] will return a single value but ar[0..0] will return it in array.
arr << ar[1..3]
arr << ar[-1..-1]
在打印时 arr
它将给出以下输出 -
[[4], [5, 6, 7], [9]]