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>
4

3 回答 3

3

在您的第一个 for 循环中,您设置totalSuccessArray"Saab"(保存在 中的值cars[i])。

这意味着当您totalSuccessArray[a]在第二个 for 循环中引用时,它的值是一个字符串。字符串是一个字符数组,所以第二个 for 循环所做的是输出前两个元素,"Saab"即字符"S""a"

你需要换行

totalSuccessArray = cars[i];

totalSuccessArray.push(cars[i]);

这样您就可以将值“Saab”添加到现有totalSuccessArray数组中。

除此之外,您还应该将声明移到totalSuccessArray代码顶部,在 for 循环之外。

您还可以对此代码进行许多其他优化,但这超出了具体问题的范围。

于 2012-12-11T17:47:55.183 回答
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++;
    }
}
于 2012-12-11T17:45:45.283 回答
1

尝试将你的totalSuccessArray定义移到你的 for 循环之外,然后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是一个字符串,而不是将字符串推入数组。

于 2012-12-11T17:46:02.980 回答