2013-01-18 12 views
26

Come eseguire questa trasformazione?matrice di sezioni da N all'ultimo elemento

["a","b","c","d","e"] // => ["c", "d", "e"] 

Stavo pensando che slice può fare questo, ma ..

["a","b","c","d","e"].slice(2,-1) // [ 'c', 'd' ] 
["a","b","c","d","e"].slice(2,0) // [] 

risposta

52

Non utilizzare il secondo argomento:

Array.slice(2); 

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice

Se la fine è omessa, tagliare gli estratti alla fine della sequenza.

+0

ok ... ma cosa succede se non riesco a prevedere se la fine della fetta sarà definita o meno. In python abbiamo str [start: None] per tagliare fino alla fine. Come posso farlo in modo equivalente su javascript? – yota

+0

@yota Se si conosce la lunghezza dell'array, è possibile passarlo come secondo argomento: 'arr.slice (2, arr.length)'. Se il secondo argomento supera la lunghezza dell'array, verrà comunque restituito 'begin' fino alla fine della sequenza. Se questo non funziona per te, avrai bisogno di un'istruzione if. –

4

solo dare l'indice di iniziare come si desidera resto dei dati dalla matrice ..

["a","b","c","d","e"].splice(2) => ["c", "d", "e"] 
4

Una considerazione importante relativa alla risposta da @insomniac è che splice e slice sono due completamente differenti funzioni, con la principale differenza dell'essere:

  • splice manipola l'array originale.
  • slice restituisce un sottoinsieme dell'array originale, con l'array originale rimasto intatto.

Vedere: http://ariya.ofilabs.com/2014/02/javascript-array-slice-vs-splice.html per ulteriori informazioni.

Problemi correlati