2010-08-26 4 views
35

Есть ли эквивалент для массива ruby ​​[n..m] в Javascript?Javascript Array: get 'range' of items

Например:

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

Благодаря

+3

да, coffeescript! [Новый и улучшенный диапазон, срез, сплайсинг и синтаксис цикла] (https://github.com/jashkenas/coffee-script/issues/835). –

ответ

60

Используйте функцию array.slice(begin [, end]).

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

Последний индекс не включен; для имитации рубинового поведения вам нужно увеличить значение end. Поэтому я думаю, slice ведет себя больше как a[m...n] в рубине.

+3

> Последний индекс не включает <Поместить это предложение жирным шрифтом (: – pasx

+1

Следует отметить, что это также изменяет исходный массив. – Brant

2

рубин и Javascript оба имеют slice method, но следить, что второй аргумент нарежьте в Ruby, длина, но в JavaScript это индекс последнего элемента:

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

Второй аргумент в slice не является обязательным, также:

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

Вы можете также передать отрицательное число, которое сель ЕКТС с конца массива:

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

Вот ссылка W3 школы link.

+4

Как насчет ссылки на ссылку javascript Mozilla, которая намного информативнее и намного лучше написана, чем сайт W3 school (который не имеет ничего общего с W3C)? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice –