3

处理一个codecademy教程,我应该像这样打印出表格的“单元格”(数组中的数组)

Cell Cell Cell

每个单元格之间有两个空格。我假设结果(对于第一个“行”)看起来像

Person  Age  City

“行”的末尾不应有空格。

我在下面编写了灾难性的 for 循环,试图遵循 codecademy 的说明(复制如下),但无法使其正常工作。谁能帮帮我...

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 的说明

我们想添加另一个 for 循环和一些格式化代码,以便我们可以按以下格式打印出三行中的每一行:

细胞细胞细胞

每个单元格值之间应该有两个空格,但不能在行尾。每行应该在单独的行上。

练习提示中有深入的说明。

删除 for 循环主体中的 console.log 语句。在 for 循环体中,定义一个变量 c。还要定义一个名为 cells 的变量并将其设置为等于当前行的长度(可以使用 table[r] 找到)。定义一个名为 rowText 的空字符串变量。确保将 rowText 设置为“”。在步骤 2 中的变量之后立即定义另一个 for 循环。

在第一个循环参数中,将 c 设置为 0。在第二个循环参数中,确保循环在 c 比单元格小一后停止。在第三个循环参数中,递增 c。在第 3 步的循环体中,将当前单元格(可以使用 table[r][c] 找到)附加到 rowText。如果 c 不是该行中最后一个单元格的位置(当 c 小于单元格 - 1 时为真),则使用 if 语句还将两个空格字符(这是“”)附加到 rowText第 3 步,但在上一个练习的循环体内部,使用 console.log 打印 rowText。

4

4 回答 4

0

使用 cells.length 而不是我认为的单元格

于 2012-08-29T18:47:47.177 回答
0

确保循环在 c 比单元格少一之后停止。

说明有点误导。真的,您希望您的c变量从 0 变为比数组长度小 1。

这一行:for(c = 0; c < cells; c++){

应该:for(c = 0; c < cells.length; c++){

因此,如果您的单元格数组具有三个元素,则应该执行循环的三个迭代。一次c等于0,另一个 wherec1,第三个 wherec是 2。然后循环构造将继续,c++语句设置c为 3,但随后条件 ( c < cells.length) 将是false,因为它会是3 < 3

于 2012-08-29T18:52:07.923 回答
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行本身,而不是其长度。

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