2010-08-26 4 views
35

Existe-t-il un équivalent pour le tableau de ruby ​​[n..m] en Javascript?Javascript Array: obtenir la 'gamme' d'éléments

Par exemple:

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

Merci

+3

oui, coffeescript! [Nouvel-et-amélioré gamme, tranche, épissure et syntaxe de boucle] (https://github.com/jashkenas/coffee-script/issues/835). –

Répondre

60

Utilisez la fonction array.slice(begin [, end]).

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

Le dernier index est non inclusif; Pour imiter le comportement de Ruby, vous devez incrémenter la valeur end. Donc, je suppose que slice se comporte plus comme a[m...n] en rubis.

+3

> Le dernier index est non-inclusif pasx

+1

A noter que ceci modifie aussi le tableau original – Brant

2

Ruby et Javascript ont tous deux une slice method, mais attention que le second argument de tranche en Ruby est la longueur, mais en JavaScript il est l'indice du dernier élément:

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

Le deuxième argument est facultatif slice aussi:

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

Vous pouvez également passer un nombre négatif, qui sel ète de la fin du tableau:

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

trouverez ici la référence W3 Schools link.

+4

Que diriez-vous de vous relier à la référence javascript de Mozilla, qui est beaucoup plus informative et beaucoup mieux écrite que le site des écoles W3 (qui n'a rien à voir avec le W3C)? https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/Array/slice –