37
How to Get Values From Array With Specific Range in Javascript
In Ruby, I can get the specific range from an array like this;
>> myArray = ['a','b','c','d','e','f','g', 'h', 'i']
>> myArray[0..4]
=> ['a','b','c', 'd', 'e']
However, since I am not using
Ruby
on this project and am using vanilla Javascript, I wonder how to achieve the same result.Turns out that it's extremely easy to do !!!
You can use
array.slice(begin [, end])
!!!
var myArray = ['a','b','c','d','e','f','g', 'h','i'];
var sliced = myArray.slice(0, 5); //will contain ['a', 'b', 'c','d', 'e']
Easy right.
If you notice, the last index is different from the
Ruby
implementation.This is because the last index is non-inclusive; to mimic ruby's behavior you have to increment the
end
value.So, in
Ruby
;myArray[m..n]
in
Javascript
;myArray.slice(m, n+1);
the second argument to slice in Ruby
is the length, but in JavaScript
it is the index of the last element.
1) You can also pass a negative number, which selects from the end of the array:
var myArray = ['a','b','c','d','e','f','g', 'h','i'];
var lastThree = myArray.slice(-3); //g, h, i
2) If
end
is omitted, slice
extracts through the end of the sequence (arr.length
).var myArray = ['a','b','c','d','e','f','g', 'h','i'];
var noEndInSlice = myArray.slice(5); //f, g, h, i
which indicate that the end
value is optional
The End
37