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]、2 番目の for ループで参照する場合、その値が文字列であることを意味します。文字列は文字の配列であるため、この 2 番目の for ループが行うことは"Saab"、文字"S"との最初の 2 つの要素を出力すること"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 に答える