119

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']
1

4 Answers 4

195

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.

Sign up to request clarification or add additional context in comments.

1 Comment

>The last index is non-inclusive< Put that sentence in bold (:
27

The second argument in slice is optional, too:

var fruits = ['apple','banana','peach','plum','pear'];
var slice1 = fruits.slice(1, 3);  //banana, peach
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.

1 Comment

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)? developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
10

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

1 Comment

actually it would be a.slice(0, 3). slice in JavaScript doesn't included the end index.
4

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);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.