wake-up-neo.com

Ruby: Was ist der einfachste Weg, um das erste Element aus einem Array zu entfernen?

Sagen wir, ich habe ein Array 

[0, 132, 432, 342, 234]

Was ist der einfachste Weg, um das erste Element loszuwerden? (0)

234
NullVoxPopuli

Das "erste" Element eines Arrays wird als " shift " bezeichnet ("unshift" ist das Hinzufügen eines Elements vor dem Array.

263
Sjoerd
a = [0,1,2,3]

a.drop(1)
# => [1, 2, 3] 

a
# => [0,1,2,3]

und zusätzlich:

[0,1,2,3].drop(2)
=> [2, 3]

[0,1,2,3].drop(3)
=> [3] 
321
scaryguy

Verwenden Sie die shift-Methode für das Array

>> x = [4,5,6]
=> [4, 5, 6]                                                            
>> x.shift 
=> 4
>> x                                                                    
=> [5, 6] 

Wenn Sie n Startelemente entfernen möchten, können Sie x.shift(n) verwenden.

298
bragboy
[0, 132, 432, 342, 234][1..-1]
=> [132, 432, 342, 234]

Im Gegensatz zu shift oder slice wird das modifizierte Array zurückgegeben (nützlich für einen Liner).

125
vise

Das ist ziemlich ordentlich:

head, *tail = [1, 2, 3, 4, 5]
#==> head = 1, tail = [2, 3, 4, 5]

Wie in den Kommentaren geschrieben, gibt es den Vorteil, dass die ursprüngliche Liste nicht verändert wird.

94
hurikhan77

oder a.delete_at 0

18
zzzhc

Schichtmethode verwenden

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

11
Rahul Patel

Sie können verwenden:

a.slice!(0)

Scheibe! generalisiert auf einen beliebigen Index oder Bereich.

10

Sie können die Methode Array.delete_at (0) verwenden, die das erste Element löscht.

 x = [2,3,4,11,0]
 x.delete_at(0) unless x.empty? # [3,4,11,0]
4
lalit.sethi143

Sie können verwenden:
arr - [arr[0]] oder sonst arr - [arr.shift()] oder einfach arr.shift(1)

1
Avijit Majhi

Sie können verwenden: 

 a.delete(a[0])   
 a.delete_at 0

Beide können funktionieren

0
sam