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;
        } 
      }    
    }
4

1 に答える 1

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;
}​

私の知る限り、このコードは連続するポンド記号の数を数え、このテキストを各行に追加します。

于 2012-10-14T20:13:42.240 に答える