ruby/rails数组两个索引之间的所有元素

spl*_*sun 6 ruby arrays ruby-on-rails

我有这样一个数组: [7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6]

从数组6到0返回数组中每个项的最简单方法是什么,结果数组如下所示: [1,2,3,4,5,6,7]

数组中的这个位置可以是动态的,例如传入4和9应该返回 [11,12,1,2,3,4]

我想知道是否有一种方法可以在Rails api中实现这一点.

提前致谢

编辑让我们假设没有负数,所以做array[2..-2]不行.

Array#splice几乎适用于此,但如果第二个位置小于第一个位置,则返回nil.

Bin*_*Mee 2

class Array
   def get_sub_array(start,last)
       (start > last) ? (self[start..-1] + self[0..last]) : self[start..last]
   end
end
Run Code Online (Sandbox Code Playgroud)

然后

a = [7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6]
a.get_sub_array(6,0)
#[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

或者如果你不想猴子补丁

你可以有一个类似的方法

def get_sub_array(array, start,last)
   (start > last) ? (array[start..-1] + array[0..last]) : array[start..last]
end

a = [7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6]
get_sub_array(a,6,0)
#[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)