Удалить сначала x получает массив - программирование

Удалить сначала x получает массив

У меня есть массив элементов, и мне нужно удалить первые x его элементов. Есть ли встроенная функция в классе Ruby Array для этого? У меня был обыск и я нашел, что было похоже, невероятно грязные или неэффективные способы сделать это.

Мне бы хотелось, например, что-то вроде этого:

my_items = [ 'item1', 'item2', 'item3', 'item4' ]
trimmed_items = my_items.delete(y, x) # deleting x entries from index y
4b9b3361

Ответ 1

У меня есть массив элементов, и мне нужно удалить первые x его элементов.

Для неразрушающего удаления

Array#drop(x) будет работать для вас.

Отбрасывает первые n элементов из ary и возвращает остальные элементы в массиве. Если задано отрицательное число, возникает ArgumentError.

my_items = [ 'item1', 'item2', 'item3', 'item4' ]
p my_items.drop(2)
p my_items

# >>["item3", "item4"]
# >>["item1", "item2", "item3", "item4"]

Деструктивное удаление

Array#shift

Удаляет первый элемент self и возвращает его (сдвигая все остальные элементы на один). Возвращает nil, если массив пуст. Если задано число n, возвращается массив из первых n элементов (или меньше), как и array.slice! (0, n).

my_items = [ 'item1', 'item2', 'item3', 'item4' ]
my_items.shift(2)
p my_items # => ["item3", "item4"]

Ответ 2

Чтобы разрушить обновление my_items, вы можете сделать:

my_items.slice!(0, 2)
# => ["item1", "item2"] 
my_items
# => ["item3", "item4"] 

Ответ 3

Еще один способ сделать это: используйте Array#shift, что особенно полезно, когда вы хотите, чтобы значения, которые вы удаляете из перед массивом.

a = (1..5).to_a
a.shift(2)
a # => [3, 4, 5]