如何将数组切割成不同大小的数组并将它们组合起来?

时间:2015-01-04 05:43:38

标签: ruby arrays

我想要的东西就像下面的伪代码一样简单:

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)

我知道它只能接受两个参数。有没有一种简单的方法来获得我需要的东西?

2 个答案:

答案 0 :(得分:4)

你几乎拥有它,你只是使用了错误的方法,你应该使用Array#values_at而不是Array#[]

ar.values_at(0, 1..3, -1)
# => [4, 5, 6, 7, 9]

另请注意,在Ruby中,索引"环绕",以便-1始终是最后一个元素,-2是倒数第二个,依此类推。

答案 1 :(得分:1)

你也可以这样做 -

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]]