2012-10-14 130 views
0

以下代码作为包含文件,包含我正在处理的初学者拼图应用教程。该代码的作品,但是现在,我已经完成了教程,我试图通读未预先解释的预加载的文件。填充多维数组

我真的绊倒了“spacecount”变量,它究竟在做什么。任何人都可以用纯英文评论每一行,这样我可以更好地理解下面的代码是如何填充rowCount数组的。非常感谢。

var totalRows = puzzle.length; 
var totalCols = puzzle[0].length; 

/* Loop through the rows to create the rowCount array 
containing the totals for each row in the puzzle */ 

var rowCount = []; 
for (var i = 0; i < totalRows; i++) { 
    rowCount[i]=""; 
    spaceCount = 0; 

    for (var j = 0; j < totalCols; j++) { 
    if (puzzle[i][j] == "#") { 
     spaceCount++; 

     if (j == totalCols-1) rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
     } else { 
      if (spaceCount > 0) { 
      rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
      spaceCount = 0; 
     } 
     }  
    } 
+0

@Blender,你可以给任何帮助将不胜感激。 – KMcA

+0

看到我的答案。它应该让事情更清楚一些。另外,如果您发现答案可以回答您的问题,请检查绿色选中标记(您似乎忘记为以前的问题执行此操作)。 – Blender

回答

0

这里有一个稍微清晰的版本:

var totalRows = puzzle.length; 
var totalCols = puzzle[0].length; 

/* Loop through the rows to create the rowCount array 
containing the totals for each row in the puzzle */ 

var rowCount = []; 

for (var i = 0; i < totalRows; i++) { 
    rowCount[i] = ""; 
    spaceCount = 0; 

    for (var j = 0; j < totalCols; j++) { 
     if (puzzle[i][j] == "#") { 
      spaceCount++; 

      if (j == totalCols - 1) { 
       rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
      } 
     } else if (spaceCount > 0) { 
      rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
      spaceCount = 0; 
     } 
    } 
}​ 

混乱的部分可能是中间的if块。

if (puzzle[i][j] == "#") {  // If a puzzle piece is `#` (a space?) 
    spaceCount++;    // Increment the spaceCount by 1. 

    if (j == totalCols - 1) { // Only if we are on the last column, add the text 
           // to the row. 
     rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
    } 
} else if (spaceCount > 0) { // If the current piece isn't a `#` but 
           // spaces have already been counted, 
           // add them to the row's text and reset `spaceCount` 
    rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
    spaceCount = 0; 
}​ 

从我所知道的情况来看,这段代码计算连续井号的数量,并将这段文字追加到每一行。

+0

对不起,如果这是一个愚蠢的问题,但我对行rowCount [i] + = spaceCount +“0123C ”之后rowCount [i]的值感到困惑。“spaceCount的值如何1),被添加到rowCount [i]? – KMcA

+0

您正在使用'+ ='运算符。 'a + = 1'相当于'a = a + 1'。 – Blender

+0

我也看不到else if语句(spaceCount> 0)是否会成为真,因为我们将spaceCounter的值设置为0,并且只将它作为if语句的一部分增加? – KMcA