如何根据一定的标准输出元素数量?

时间:2012-12-11 17:40:54

标签: javascript

我想计算特定车辆的数量并输出车辆, 我可以算出萨博的数量,但是当我试着拿出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>

3 个答案:

答案 0 :(得分:3)

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

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

您需要更改行

totalSuccessArray = cars[i];

totalSuccessArray.push(cars[i]);

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

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

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

答案 1 :(得分: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++;
    }
}

答案 2 :(得分: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设置为的值是一个字符串,而不是将字符串推入数组中。