使用for循环访问嵌套数组的单元格

时间:2012-08-29 18:42:57

标签: javascript

在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。还定义一个变量   命名单元格并将其设置为等于当前行的长度(其中   可以用table [r]找到。定义一个名为的空字符串变量   rowText。确保将rowText设置为“”。定义另一个   在步骤2的变量之后立即循环。

     

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

4 个答案:

答案 0 :(得分:0)

使用cells.length而不是我想的单元

答案 1 :(得分:0)

  

确保在c小于单元格之后循环停止。

说明有点误导。你真的希望你的c变量从0变为小于数组的长度。

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

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

  

定义一个名为cells的变量,并将其设置为等于当前行的长度

您将cells设置为行本身,而不是其长度。

var cells = table[r].length;