2012-12-11 48 views
0

我想算特定車和輸出的汽車數量, 我可以指望薩博的數量,但是當我嘗試了2輛薩博汽車我得到的「sa」如何根據特定標準輸出元素的數量?

更新

<!DOCTYPE html> 
<html> 
<body> 

<script> 
cars=["BMW","Volvo","Saab","Ford","Saab"]; 
var count=0; 
var totalSuccessArray= new Array(); 
for (var i=0;i<cars.length;i++) 
{ 
    document.write(cars[i] + "<br>"); 
    if(cars[i]=="Saab") { 
     totalSuccessArray.push(cars[i]); 

     count++; 
    } 


} 

alert(count); 
document.write(count + "<br>"); 

for (var a=0;a<count;a++) { 
      document.write("totalssuccess"+totalSuccessArray[a] + "<br>"); 
} 

</body> 
</html> 
+1

你爲什麼要聲明並初始化for循環中的totalSuccessArray?這將重新初始化您的陣列每次汽車[i] ==「薩博」 – Maciej

+0

這些是w3schools汽車哈哈 –

回答

1

請嘗試移動totalSuccessArray定義你的外面循環,然後push()荷蘭國際集團的元素到這樣的:

cars=["BMW","Volvo","Saab","Ford","Saab"]; 
var count=0; 
var totalSuccessArray= new Array(); 
for (var i=0;i<cars.length;i++) 
{ 
    document.write(cars[i] + "<br>"); 
    if(cars[i]=="Saab") { 
     totalSuccessArray.push(cars[i]); 
     count++; 
    } 
} 

在您的原始代碼中,您每次都重新創建了totalSuccessArray。另外,您將totalSuccessArray設置爲的值是一個字符串,而不是將該字符串推入數組中。

1

您正在將totalSuccessArray更改爲字符串,然後遍歷其中的字母。字符串上使用的括號將返回該位置的字符。我想你的意思做的是新車添加到陣列:

cars=["BMW","Volvo","Saab","Ford","Saab"]; 
var count=0; 
var totalSuccessArray= new Array(); 
for (var i=0;i<cars.length;i++) { 
    document.write(cars[i] + "<br>"); 
    if(cars[i]=="Saab") { 
     totalSuccessArray[count] = cars[i]; 
     count++; 
    } 
} 
3

在您的第一個for循環中,您將totalSuccessArray設置爲"Saab"(值爲cars[i])。

這意味着當您在第二個for循環中引用totalSuccessArray[a]時,它的值是一個字符串。一個字符串是一個字符數組,所以第二個for循環所做的是輸出"Saab"的前兩個元素,即字符"S""a"

您需要將線

totalSuccessArray = cars[i]; 

改變

totalSuccessArray.push(cars[i]); 

這樣你的價值 「薩博」 添加到現有的totalSuccessArray陣列。

除此之外,您還應該將totalSuccessArray的聲明移至代碼頂部,在for循環之外。

您還可以對此代碼進行其他一些優化,但這超出了特定問題的範圍。

相關問題