3

このようにテーブル(配列内の配列)の「セル」を出力することになっているcodecademyチュートリアルに取り組んでいます

Cell Cell Cell

各セルの間に 2 つのスペースがあります。結果(最初の「行」の場合)は次のようになると想定しています

Person  Age  City

「行」の最後にスペースがあってはなりません。

codecademy からの指示 (以下にコピー) に従おうとして、悲惨な for ループを以下に書きましたが、動作させることができません。誰か手を貸してくれませんか...

var table = [
    ["Person",  "Age",  "City"],
    ["Sue",     22,     "San Francisco"],
    ["Joe",     45,     "Halifax"]
];

for (var r in table) {       ////// I wrote this for statement
    var c;
    var cells = table[r]; 
    var rowText = ""; 
    for(c = 0; c < cells; c++){
        rowText += table[r][c];
        if(c < cells - 1){         //only adds the space if not at end of line
            rowText += "  "; 
        }
    }

    console.log(rowText); 

}

Codecademy.com からの指示

次の形式で 3 つの行のそれぞれを出力できるように、別の for ループといくつかの書式設定コードを追加します。

セルセルセル

各セル値の間には 2 つのスペースが必要ですが、行末にはスペースを入れないでください。各行は別々の行にある必要があります。

詳細な手順は、演習のヒントにあります。

for ループの本体にある console.log ステートメントを削除します。for ループの本体で、変数 c を定義します。また、cells という名前の変数を定義し、現在の行の長さと等しくなるように設定します (これは table[r] で確認できます)。rowText という名前の空の文字列変数を定義します。rowText が "" に設定されていることを確認してください。ステップ 2 の変数の直後に別の for ループを定義します。

最初のループ パラメーターで、c を 0 に設定します。2 番目のループ パラメーターで、c がセルより 1 つ少ない後にループが停止することを確認します。3 番目のループ パラメータで、c をインクリメントします。手順 3 のループの本体で、現在のセル (table[r][c] で見つけることができます) を rowText に追加します。c が行の最後のセルの位置でない場合 (c がセル - 1 より小さい場合は true)、if ステートメントを使用して 2 つのスペース文字 (これは " ") を rowText に追加します。ステップ 3 ですが、最後の演習のループ本体の内部で、console.log を使用して rowText を出力します。

4

4 に答える 4

0
var table = [
    ["Person",  "Age",  "City"],
    ["Sue",     22,     "San Francisco"],
    ["Joe",     45,     "Halifax"]
];

var text = "";

for( var i=0; i<table.length; i++ ){

    for( var j=0; j<table[i].length; j++ ){

        text += table[i][j];

        if( j < table[i].length-1 ){
            text += "  ";                
        }

    }        

    text += "\n";

}

console.log(text);
​

収量:

Person  Age  City
Sue  22  San Francisco
Joe  45  Halifax
于 2012-08-29T18:54:31.020 に答える
0

私が思うセルではなく、cells.lengthを使用してください

于 2012-08-29T18:47:47.177 に答える
0

セルという名前の変数を定義し、現在の行の長さと等しくなるように設定します

cells長さではなく、行自体に設定しています。

var cells = table[r].length;
于 2012-08-29T18:58:16.350 に答える
0

c がセルよりも 1 つ少ない後にループが停止することを確認してください。

指示は少し誤解を招くものです。実際には、c変数を 0 から配列の長さよりも 1 小さい値にする必要があります。

この行:for(c = 0; c < cells; c++){

次のようにする必要があります。for(c = 0; c < cells.length; c++){

したがって、cells 配列に 3 つの要素がある場合、ループの 3 回の反復を実行する必要があります。1 回は にc等しく0、別の場所c1であり、3 つ目の場所は 2 です。その後、ステートメントを 3 に設定しcてループ構成が続行されますが、条件 ( ) は になるため、 になります。c++cc < cells.lengthfalse3 < 3

于 2012-08-29T18:52:07.923 に答える