2010-08-26 81 views
35

Javascript中是否有等价的ruby数组[n..m]?Javascript数组:获得'范围'的项目

例如:

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

感谢

+3

是的,咖啡! [新改进的范围,切片,拼接和循环语法](https://github.com/jashkenas/coffee-script/issues/835)。 – 2011-05-18 23:02:40

回答

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 2013-09-12 23:30:16

+1

注意,这也会修改原始数组, – Brant 2017-09-13 15:35:15

2

的Ruby和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 

你也能传递一个负数,这SEL从阵列末端的效果:

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

这里是W3学校的参考link

+4

如何链接到Mozilla的JavaScript引用,这比W3学校网站(与W3C无关)写得多得多,而且写得更好? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice – 2010-08-26 23:50:10