2016-04-11 16 views
-5

Burada JS'de bir dizinin boşaltılmasıyla ilgili bir konu buldum, ancak burada yayınlamaya izin verilmiyor. Buraya sormam gerek. İşte benim kodudur:Bir diziyi temizleyemiyorum

sumarray.length=0; 
sumarray = []; 
    for (var i=0; i<3; i++) 
     sumarray.push(i); 
    console.log('***1***:',sumarray.length, sumarray); 
    var t; 
    while (console.log('***2***: t:',t=sumarray.pop()) || t!==undefined) { 
     console.log('***3***:',sumarray.length,sumarray); 
    } 
console.log('*****4***: ',sumarray.length, sumarray); 

Ve bu

ben kurtulabilirsiniz başka variable.How küresel sumarray dizi atamadı günlüğüne bakın ne içindeki çöp? Şimdiden teşekkürler.

+0

sen 'çöp' derken neyi kastediyorsunuz? – Xzandro

+0

'sumarray.length = 0; sumarray = []; 'Sumarray' varsa ve önceden bir dizi ise, ilk komut gereksizdir. Varsa ancak bir dizi değilse, işe yaramaz. Varsa, geçersizdir. Bir amaca hizmet ettiği bir senaryo yoktur. Bu arada, bize verdiğiniz kod (sizin dizi [18,3] 'değil) bazı oyun nesneleri içeriyorsa, çıktınız imkansızdır, yani kodunuz' sumarray' oluşturma konusunda yanlışsa, güvenemem. başka bir yerde de yanlış değil. Yapıştırılan kod, 'pop' veya somesuch'unu yeniden tanımlamamışsanız boş bir 'sumarray' ile sonuçlanır. – Amadan

+0

Neler oluyor burda? while (console.log ('*** 2 ***: t:', t = sumarray.pop()) .. '? – Andy

cevap

0

Yalnızca delete anahtar sözcüğünü kullanın.

Örnek Aşağıda bak:

var summary = ["x","y","z"]; 

sonra

for(var i=0; i < summary.length; i++){ 
    delete summary[i]; 
    } 

--update

tanımlanmamış bir işgal uzunluğunda bir dizi döndürür silmek ancak endeksler tutacak.

Hala tamamen endeksli kaldırmak için pop kullanabilirsiniz:

for(var i=0; i < summary.length; i++){ 
     summary.pop(i); 
     } 
+0

Fikir için teşekkürler - İlk yöntem yardımcı olmadı - Aynı günlüğü görüyorum. Zaten kullandığım ikinci. – Pochemuchka

+0

Comp yeniden başlatıldıktan sonra aynı şey. :( – Pochemuchka