Javascript Array: получить «диапазон» предметов - PullRequest
40 голосов
/ 27 августа 2010

Есть ли эквивалент в массиве ruby ​​[n..m] в Javascript?

Например:

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

Спасибо

Ответы [ 4 ]

74 голосов
/ 27 августа 2010

Используйте функцию 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] в рубине.

7 голосов
/ 27 августа 2010

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

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

5 голосов
/ 27 августа 2010

Второй аргумент в 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 ссылка .

2 голосов
/ 27 августа 2010

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

var shortArray = array.slice(start, end);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...