2017-01-12 62 views
0

嘿傢伙我沒有看到我的代碼上的錯誤。Javascript array.push()特殊代碼

我只是想添加一些計算數字到我的數組中。

只要看看名爲「numberOfarrays」的數組。 爲什麼亂擺的樣子說:

5050,2550,25,2050,25,20,1450,25,20 ...

,而不是像我想:

50,25,20,14 ....

我真的糊塗了。

我的代碼:

<script> 
    var a = [2,4,6,8,10,12,14,16,18,20]; 
    var sum= 0;//110 
    for (var i = 0; i < a.length; i ++) { 
     sum = sum+a[i] 
    } 
    alert(sum); 
    var tmp = 100/sum;//0,909.. 
    alert(tmp); 
    var arryPlaetze = []; 

    for (var i = 0; i < a.length; i ++) {// 10 durchläufe 
     arryPlaetze.push(Math.round(tmp*a[i])); 
    } 
    var wheel =[]; 
    var lengthWheel = 100; 
    var numberOfarrays =[]; 
    alert("numberOfarrays"+ numberOfarrays.toString()); 
    alert(arryPlaetze[1]); 

    //Problem 
    for (var i = 0; i < arryPlaetze.length; i++) { 
     alert("zahler: "+i); 
     alert("test "+Math.round(lengthWheel/arryPlaetze[i]));//50 
     var tmp = Math.round(lengthWheel/arryPlaetze[i]); 
     numberOfarrays.push(tmp);// fail why 5050 not 50,25 


     document.write(numberOfarrays.toString()); 

    } 

</script> 

你可以把代碼轉換成HTML來運行它很容易。

+3

將'document.write(numberOfarrays.toString());'移到循環的外部。你在每一步顯示數組的內容。如果[使用控制檯](http://stackoverflow.com/documentation/javascript/185/hello-world/714/using-console-log)記錄信息,它會更好。 –

+0

thx非常。現在我找到了我的錯。有時你需要寫信給人以獲得解決方案^^。 – thenewOne1234567890

回答

6

將您的document.write()移到您的循環之外。現在它正在打印每次陣列,從而導致

(50)(50,25)(50,25,20)(50,25,20,14) 

但由於沒有() S,那麼它只是打印爲

505025502520... 

而且麥克ç說,這將是更好如果您使用console.log()而不是document.write(),則記錄日誌。

+0

對於日誌記錄而言,它比「警報」更有效。 –