簡體   English   中英

遍歷列表時出現 TypeError,javascript

[英]TypeError when iterating through a list, javascript

我連續打了一個快速的小四場比賽,我一遍又一遍地出錯。 我一直在尋找一段時間現在嘗試的東西,我仍然不明白為什么這個代碼(對不起,糟糕的代碼順便說一句):

      var player = 0;
      var gameOver = false;
      var FinalMes = document.getElementById("gameOver");

      var feild = [
        ["_", "_", "_", "_", "_", "_", "_", "_", "_"],
        ["_", "_", "_", "_", "_", "_", "_", "_", "_"],
        ["_", "_", "_", "_", "_", "_", "_", "_", "_"],
        ["_", "_", "_", "_", "_", "_", "_", "_", "_"],
        ["_", "_", "_", "_", "_", "_", "_", "_", "_"],
        ["_", "_", "_", "_", "_", "_", "_", "_", "_"],
      ];


        for (i = 0; i < 3; i++) {
          for (j = 0; j < 6; i++) {
            if (
              feild[i][j] == 1 &&
              feild[i + 1][j + 1] == 1 &&
              feild[i + 2][j + 2] == 1 &&
              feild[i + 3][j + 3] == 1
            ) {
              f.hidden = true;
              gameOver = true;
              FinalMes.innerHTML = `Spelare ${player} vann!`;
            }
          }
        }

給出這個錯誤:

Uncaught TypeError TypeError: Cannot read properties of undefined (reading '3')

在線:

feild[i+3][j+3] == 1

一個問題是您的最內層循環正在增加與外層循環相同的計數器,即:
更改: for (j = 0; j < 6; i++) {
為: for (j = 0; j < 6; j++) {

另一個問題是您將讀取不在數組中的索引,除非數組在片段之外的其他地方被修改。

假設我們處於循環的最后一次迭代中
聲明: feild[i+3][j+3]
將等於: feild[6][9]並且這似乎是代碼段中不在數組中的索引

希望這可以幫助:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM