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.
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)