Lets say I have an array
[0, 132, 432, 342, 234]
What is the easiest way to get rid of the first element? (0)
Use .drop(1).
This has the benefit of returning a new Array with the first element removed, as opposed to using .shift
, which returns the removed element, not the Array with the first element removed.
NOTE: It does not affect/mutate the original Array.
a = [0,1,2,3]
a.drop(1)
# => [1, 2, 3]
a
# => [0,1,2,3]
And, additionally, you can drop more than the first element:
[0,1,2,3].drop(2)
=> [2, 3]
[0,1,2,3].drop(3)
=> [3]
Use the shift
method on array
>> x = [4,5,6]
=> [4, 5, 6]
>> x.shift
=> 4
>> x
=> [5, 6]
If you want to remove n starting elements you can use x.shift(n)
"pop"ing the first element of an Array is called "shift" ("unshift" being the operation of adding one element in front of the array).
nil
on an empty array. See drop
for an alternative, as mentioned in the other answer.
[0, 132, 432, 342, 234][1..]
=> [132, 432, 342, 234]
So unlike shift
or slice
, this returns a new array, keeping the original array untouched (useful for one liners).
[][1..-1] => nil
and not []
.
[1,2,3].shift
a one-liner?
arry[1..-1] || []
. But arry.drop(1) is even better.
This is pretty neat:
head, *tail = [1, 2, 3, 4, 5]
#==> head = 1, tail = [2, 3, 4, 5]
As written in the comments, there's an advantage of not mutating the original list.
(let ((head (car mylist)) (tail (cdr mylist)) ...)
header, *properties = CSV.read(file_path,encoding: 'ISO-8859-1')
or a.delete_at 0
Use shift method
array.shift(n) => Remove first n elements from array
array.shift(1) => Remove first element
https://ruby-doc.org/core-2.2.0/Array.html#method-i-shift
You can use Array.delete_at(0) method which will delete first element.
x = [2,3,4,11,0]
x.delete_at(0) unless x.empty? # [3,4,11,0]
unless x.empty?
is necessary. It simply returns nil
if the index is out of range.
You can use:
arr - [arr[0]]
or
arr - [arr.shift]
or simply
arr.shift(1)
You can use:
a.delete(a[0])
a.delete_at 0
Both can work
Success story sharing
[].drop(1) => []
shift
mutates the array in place and returns the shifted element (ornil
if array was empty)