Ho un array. Ho bisogno di tenere tutto tranne l'elemento all'indice 0. Il mio cervello è fritto a questo punto. Ho programmato tutto il giorno. Qualsiasi aiuto sarebbe fantastico. Grazie!Ruby Rimuovi il primo indice di un array
risposta
Utilizzare il metodo Array#shift
, che fa esattamente quello che vuoi :
a = [1, 2, 3]
a.shift # => 1
a # => [2, 3]
Avrei giurato di averlo già provato. Sembrava così facile. Devo aver appena avuto un errore di battitura o qualcosa del genere. Grazie –
Per un divertente (volgare) mnemonico che aiuti a ricordare se 'shift' o' unshift' rimuove gli elementi dall'array, prova a rilasciare la "f" dal nome. :) – Phrogz
@Phrogz: lol, lo adoro. – maerics
Si potrebbe utilizzare indice di matrice affettare:
some_array[1..-1]
o, se si desidera modificare in modo permanente una variabile, howsabout:
some_array = [1,2,3,4]
some_array.delete_at(0)
# => 1
some_array
# => [2,3,4]
come su fetta!
a = [ "a", "b", "c"]
a.slice! (0) # => "a"
un # => [ "b" , "c"]
http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-slice-21
seconda di come quello che sarà fatto con il risultato (un array con il primo elemento rimosso) ci sono diversi modi per ottenere il risultato e come verranno utilizzati possono influenzare la scelta.
Un modo cambia l'array originale in un nuovo array con il primo elemento rimosso applicando un metodo, ignorando il risultato di tale metodo e ottenendo il risultato desiderato a causa dell'effetto collaterale del metodo applicato. L'OP ha accettato una risposta che ha fatto questo (che implica ha funzionato nel suo caso):
a = [ "a", "b", "c" ]
a.shift #=> "a"
a #=> ["b", "c"]
che funziona bene se si desidera che la matrice risultante conservato ma il tuo bisogno è far cadere qualche metodo nel bel mezzo di una catena dei metodi esistenti al fine di "sbarazzarsi di quel primo elemento dell'array". Ma nel mio caso avevo un array in cui il primo elemento era una linea di prua prodotta da un comando di sistema seguito da diverse righe dell'output da quel comando, uno in ciascun elemento dell'array e stava modificando le linee per ottenere il risultato desiderato quando si rese conto che la riga di intestazione doveva essere rimossa poiché, essendo di una forma diversa dalle linee rimanenti, non era gestita correttamente e non era necessaria. La mia linea di codice originale sembrava qualcosa di simile (dove ancora una volta, a
è la matrice):
puts a.method1.method2.method3.method4
e ho voluto fare questo:
puts a.method1.method2.removeFirstElement.method3.method4
Un modo per farlo utilizzando slice
è stato mostrato in una risposta diversa anche se non è stato chiarito come potrebbe essere meglio in alcuni casi che la risposta accettata:
puts a.method1.method2.slice(1..-1).method3.method4
Se ho usato la risposta accettata avrei ettari ve a fare qualcosa di simile:
temp = a.method1.method2
temp.shift
puts temp.method3.method4
Oltre alla necessità di rivedere la struttura del codice originale (anche se ci sono pro e contro a che a seconda di ciò che è stato fatto), è necessario creare un nuovo oggetto temporaneo ('temporanea ') solo per arrivare al risultato.
È bello sapere che dove ci stiamo dirigendo spesso ha un deciso effetto su come arrivarci.
(ti faccio notare che avrei quasi preferire l'uso di slice!(0)
al posto di shift
per cambiare realmente la matrice dal momento che il punto esclamativo indica chiaramente che l'array è stato cambiato, il metodo shift
non è conforme al corrente suggerimento di aggiungere un punto esclamativo per i metodi che cambierà un oggetto. Ma, ahimè, probabilmente sarei utilizzare shift
in ogni caso per evitare l'ingombro del (0)
.)
- 1. rimuovi il primo elemento dall'array
- 2. Array push come primo indice PHP
- 3. Rimuovi il primo carattere con jQuery
- 4. Trova il primo indice di un elemento in un array in Julia
- 5. array di ruby sort di un array
- 6. Trova il primo indice di una stringa dopo indice
- 7. Ottieni il primo elemento di un array sparse JavaScript
- 8. PHP rimuovere il primo indice di un array e ri-index
- 9. Convertire un indice di array 2D in un indice 1D
- 10. Esiste un equivalente di Array # find_index per l'ultimo indice in ruby?
- 11. Converti indice array 1D in indice array 2D
- 12. Indice al centro di un array numpy?
- 13. Come raggruppare il primo elemento di un array con MongoDB?
- 14. Fissare primo elemento, mischiare il resto di un elenco/array
- 15. Rimuovere il primo elemento di un array VBA
- 16. Ottieni il primo indice di elenco contenente la sottostringa?
- 17. Python controlla il primo e l'ultimo indice di una lista
- 18. Rimuovi elementi duplicati dalla matrice in Ruby
- 19. PowerShell Rimuovi elemento [0] da un array
- 20. PS: Ottieni indice in un elenco di array
- 21. Rimuovi solo il primo elemento da una selezione jquery
- 22. Aggiungi voce all'elenco e rimuovi il primo in Python
- 23. Ordinamento di un array di array in Ruby
- 24. Ripristina PHP Indice Array
- 25. Come posso rimuovere il primo elemento di un array nell'obiettivo C?
- 26. Ruby gsub con indice/offset?
- 27. Trovare il primo duplicato in un array int, java
- 28. analisi di un array Ruby per JSON
- 29. Come ottenere il primo elemento da un array PHP associativo?
- 30. Aggiungi indice nel modello EF Primo modello
http://whathaveyoutried.com? –