2010-08-26 23 views
35

Esiste un equivalente per l'array di ruby ​​[n..m] in Javascript?Array Javascript: ottieni 'intervallo' di elementi

Ad esempio:

>> a = ['a','b','c','d','e','f','g'] 
>> a[0..2] 
=> ['a','b','c'] 

Grazie

+3

sì, coffeescript! [Nuova gamma migliorata, slice, splice e loop syntax] (https://github.com/jashkenas/coffee-script/issues/835). –

risposta

60

Utilizzare la funzione array.slice(begin [, end]).

var a = ['a','b','c','d','e','f','g']; 
var sliced = a.slice(0, 3); //will contain ['a', 'b', 'c'] 

L'ultimo indice non è compreso; per simulare il comportamento di Ruby è necessario incrementare il valore end. Quindi immagino che lo slice si comporti più come a[m...n] in rubino.

+3

> L'ultimo indice non è comprensivo pasx

+1

Va notato che questo modifica anche l'array originale. – Brant

2

Ruby e JavaScript hanno entrambi un slice method, ma attenzione che il secondo argomento per affettare in Ruby è la lunghezza, ma in JavaScript è l'indice dell'ultimo elemento:

var shortArray = array.slice(start, end); 
4

Il secondo argomento in slice è facoltativo, troppo:

var fruits = ['apple','banana','peach','plum','pear']; 
var slice1 = fruits.slice(1, 3); //banana, peach, plum 
var slice2 = fruits.slice(3); //plum, pear 

è anche possibile passare un numero negativo, che sel ette dalla fine della matrice:

var slice3 = fruits.slice(-3); //peach, plum, pear 

Ecco il riferimento W3 Schools link.

+4

Che ne dici del collegamento al riferimento javascript di Mozilla, che è molto più informativo e molto meglio scritto rispetto al sito delle scuole W3 (che non ha nulla a che fare con il W3C)? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice –

Problemi correlati