我想计算特定车辆的数量并输出车辆, 我可以算出萨博的数量,但是当我试着拿出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>
答案 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
设置为的值是一个字符串,而不是将字符串推入数组中。