Массив JavaScript: получить диапазон элементов

Есть ли эквивалент для ruby ​​array[n..m] в JavaScript?

Например:

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

person shdev    schedule 26.08.2010    source источник
comment
да, кофескрипт! Новый и улучшенный синтаксис диапазона, среза, соединения и цикла.   -  person Lance Pollard    schedule 19.05.2011


Ответы (4)


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

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

Последний индекс не является инклюзивным, чтобы имитировать поведение ruby, необходимо увеличить значение end. Так что я думаю, что slice ведет себя больше как a[m...n] в рубине.

person Vivin Paliath    schedule 26.08.2010
comment
›Последний индекс не является исчерпывающим‹ Выделите это предложение жирным шрифтом (: - person pasx; 13.09.2013

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

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

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

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

Вот справочная информация по школам W3 ссылка.

person David Hoerster    schedule 26.08.2010
comment
Как насчет ссылки на справочник Mozilla по javascript, который намного информативнее и лучше написан, чем школьный сайт W3 (который не имеет ничего общего с W3C)? developer.mozilla.org/en/JavaScript/Reference/Global_Objects/ - person Bobby Jack; 27.08.2010

a.slice(0, 3) Будет эквивалентом вашей функции в вашем примере.

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

person Robert    schedule 26.08.2010
comment
на самом деле это будет a.slice(0, 3). slice в JavaScript не включает конечный индекс. - person Anurag; 27.08.2010

В Ruby и Javascript есть метод среза, но будьте осторожны что вторым аргументом для среза в Ruby является длина, а в JavaScript это индекс последнего элемента:

var shortArray = array.slice(start, end);
person Douglas    schedule 26.08.2010