JavaScript ile bir dizi nasıl kolayca kesilir?


103

Linq, Take()uygulayan herhangi bir şeyde belirli sayıda öğeyi döndürmek için çağrılan uygun bir operatör yöntemine sahiptir.IEnumerable . Dizilerle çalışmak için jQuery'de benzer bir şey var mı?

Veya farklı bir şekilde sorulur: Javascript'te bir diziyi nasıl kesebilirim?


22
Çocuklar lütfen jQuery'den önce JavaScript öğrenin. Korkarım yarının soruları "jQuery Dizilerin yanında başka hangi veri türlerini açığa çıkarır?" Olacak.
Ionuț G. Stan

Yanıtlar:


185

Bir dilim yöntemi var

array.slice(0, 4);

İlk dört öğeyi döndürür.

Diğer değerleri atmak istiyorsanız, onu değişkeninize geri atamayı unutmayın.

Not: Bu sadece normal bir javascript, jquery'ye gerek yok.


15
(0,4) ilk 5'i değil ilk 4'ü döndürmez mi?
Simon Keep

11
Bu aslında doğru değil. Simon Keep doğrudur - .slice () yönteminin ikinci argümanı, döndürülecek son öğeden sonraki dizi konumudur . array.slice (0, 4) 0, 1, 2 ve 3 - toplam 4 öğe - döndürecektir. İkinci bağımsız değişkeni kesme noktası olarak düşünün; burada .slice (0, x), dizinin başlangıcından x'e kadar olan ancak dahil olmayan tüm öğeleri döndürür .
Bungle

1
enddahil DEĞİLDİR, sonra @SimonKeep haklıdır, bkz. MDN developer.mozilla.org/en-US/docs/JavaScript/Reference/…
AsTeR

2
Değişkene geri atamayı unutmayın, göründüğü kadar basittir
kolexinfos

6
kötü bir şekilde, yeni bir dizi örneği oluşturursunuz, js kodlamak kötü bir fikir olmadığında bellek kullanımını aklınızda bulundurun.
G. Ghez

126

(2 yıl sonra ...) Bir diziyi gerçekten kesmek istiyorsanız, şu özelliği de kullanabilirsiniz length:

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]

Not: Mevcut uzunluktan daha uzun bir uzunluk atarsanız , tanımlanmamış dizi öğeleri aşağıda gösterildiği gibi sunulur.

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = 5;
alert(typeof stooges[4]); // alerts "undefined"

DÜZENLE:

@Twhitehead aşağıda belirtildiği gibi, bunu yaparak tanımsız elemanların eklenmesinden kaçınılabilir:

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"

5
İlk önce bunu bir kodda gördüğümde şaşırdım ... Ama bu en iyi yol (eğer 0 dizininden
kısalıyorsanız

5
Bu inanılmaz derecede basit bir çözüm.
Dominique

3
Çöp toplama bu şekilde yapılırsa ne olacak?
G. Ghez

1
@JonathanM Aslında, null değerler tanıtılmaz; yeni değişkenler tanımlandıklarından ancak herhangi bir değere atanmadıklarından tanımsızdır.
Håvard Geithus

3
İnanılmaz! Bu yöntemin Arrayyeni bir tane oluşturmak yerine aynı şeyi değiştirdiğini söylemeye değer Array.
Ferah

22

Nasıl kırpılacağını soruyorsanız (sondan öğeleri kaldırarak bir diziyi değiştirin) o zaman splice'ı kullanın :

var a1 = [2,4,6,8];
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8]

Orijinali değiştirmeden bir dizinin bir alt kümesinin nasıl alınacağını soruyorsanız, dilimi kullanın .

var a1 = [2,4,6,8];
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8]

Sadece splice değişikliklerini, dilim erişimlerini hatırlayın. İlk bağımsız değişken olarak negatif sayılar, dizinin sonundan itibaren dizini gösterir.




1

Bir diziden seçmeli olarak öğe çekmek istiyorsanız, jQuery.grep'i kullanabilirsiniz. yöntemini .

(jQuery belgelerinden)

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];

$("div").text(arr.join(", "));

arr = jQuery.grep(arr, function(n, i){
  return (n != 5 && i > 4);
});

$("p").text(arr.join(", "));

arr = jQuery.grep(arr, function (a) { return a != 9; });
$("span").text(arr.join(", "));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.