2010-08-26 13 views
35

Javascript'te ruby'nin dizisi [n..m] için bir eşdeğer var mı? ÖrneğinJavascript Dizi: öğelerin aralığına 'ulaşmak'

:

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

Teşekkür

+3

evet, coffeescript! [Yeni ve geliştirilmiş aralık, dilim, ekleme ve döngü sözdizimi] (https://github.com/jashkenas/coffee-script/issues/835). –

cevap

60

array.slice(begin [, end]) işlevini kullanın.

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

Son dizin dahil değildir; Ruby'nin davranışını taklit etmek için end değerini artırmanız gerekir. Yani, slice, ruby'de a[m...n] gibi daha fazla davranıyor.

+3

> Son dizin içermez pasx

+1

Not: Bu orijinal diziyi de değiştirir. – Brant

2

Yakut ve JavaScript hem slice method var ama Ruby dilimlemeniz ikinci argüman uzunluğu olduğuna dikkat fakat JavaScript son elemanın endeksidir:

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

slice ikinci argüman da isteğe bağlıdır:

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

Ayrıca negatif bir sayı, geçebildiği sel ECTS dizinin sonundaki:

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

burada W3 Okullar referans link var.

+4

Mozilla'nın javascript referansına bağlanma hakkında, W3 okulları sitesinden (W3C ile ilgisi olmayan) çok daha bilgilendirici ve çok daha iyi yazılmış olan nasıl? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice –