views:

141

answers:

4

Is there an equivalent for ruby's array[n..m] in Javascript ?

For example:

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

Thanks

+7  A: 

Use the array.slice(begin [, end]) function.

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

The last index is non-inclusive; to mimic ruby's behavior you have to increment the end value. So I guess slice behaves more like a[m...n] in ruby.

Vivin Paliath
+1  A: 

a.slice(0, 3) Would be the equivalent of your function in your example.

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

Robert
actually it would be `a.slice(0, 3)`. slice in JavaScript doesn't included the end index.
Anurag
D'oh, nice catch, updated.
Robert
A: 

Ruby and Javascript both have a slice method, but watch out that the second argument to slice in Ruby is the length, but in JavaScript it is the index of the last element:

var shortArray = array.slice(start, end);
Douglas
A: 

The second argument in slice is optional, too:

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

You can also pass a negative number, which selects from the end of the array:

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

Here's the W3 Schools reference link.

David Hoerster
How about linking to Mozilla's javascript reference, which is far more informative and much better written than the W3 schools site (which has nothing to do with the W3C)? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice
Bobby Jack