首页 > 解决方案 > 为什么这段代码在我没有告诉它的情况下修改了我的数组?

问题描述

大家好,这个函数是我正在编写的更大代码的一部分,但我将其隔离以显示我的问题。事情是这样的;

我将一个名为 Movement 的数组声明为

var Movement =[
[1,8],[2,8],[3,8],[4,8],[5,8],[6,8],[7,8],[8,8],
[1,7],[2,7],[3,7],[4,7],[5,7],[6,7],[7,7],[8,7],
[1,6],[2,6],[3,6],[4,6],[5,6],[6,6],[7,6],[8,6],
[1,5],[2,5],[3,5],[4,5],[5,5],[6,5],[7,5],[8,5],
[1,4],[2,4],[3,4],[4,4],[5,4],[6,4],[7,4],[8,4],
[1,3],[2,3],[3,3],[4,3],[5,3],[6,3],[7,3],[8,3],
[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2],
[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1]
]

但是当我输入 console.log

console.log(Movement)

我明白了



Movement =[
[0,8],[0,8],[0,8],[true,8],[true,8],[true,8],true,8],[true,8],
[false,7],[false,7],[3,7],[4,7],[5,7],[6,7],[7,7],[8,7],
[1,6],[2,6],[3,6],[4,6],[5,6],[6,6],[7,6],[8,6],
[1,5],[2,5],[3,5],[4,5],[5,5],[6,5],[7,5],[8,5],
[1,4],[2,4],[3,4],[4,4],[5,4],[6,4],[7,4],[8,4],
[1,3],[2,3],[3,3],[4,3],[5,3],[6,3],[7,3],[8,3],
[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2],
[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1]
]

它从哪里得到所有这些真值或假值?我的代码中根本不处理真假。

我通过一个不修改它的函数运行数组,该函数是否返回任何真值或假值,所以我缺少什么吗?

JavaScript

let ChessMap = [
  8, 3, 4, 7, 5, 4, 3, 8,
  6, 6, 6, 6, 6, 6, 6, 6,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 8, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  60, 60, 60, 60, 60, 60, 60, 60,
  80, 30, 40, 70, 50, 40, 30, 80,
];
var Movement = [
  [1, 8],
  [2, 8],
  [3, 8],
  [4, 8],
  [5, 8],
  [6, 8],
  [7, 8],
  [8, 8],
  [1, 7],
  [2, 7],
  [3, 7],
  [4, 7],
  [5, 7],
  [6, 7],
  [7, 7],
  [8, 7],
  [1, 6],
  [2, 6],
  [3, 6],
  [4, 6],
  [5, 6],
  [6, 6],
  [7, 6],
  [8, 6],
  [1, 5],
  [2, 5],
  [3, 5],
  [4, 5],
  [5, 5],
  [6, 5],
  [7, 5],
  [8, 5],
  [1, 4],
  [2, 4],
  [3, 4],
  [4, 4],
  [5, 4],
  [6, 4],
  [7, 4],
  [8, 4],
  [1, 3],
  [2, 3],
  [3, 3],
  [4, 3],
  [5, 3],
  [6, 3],
  [7, 3],
  [8, 3],
  [1, 2],
  [2, 2],
  [3, 2],
  [4, 2],
  [5, 2],
  [6, 2],
  [7, 2],
  [8, 2],
  [1, 1],
  [2, 1],
  [3, 1],
  [4, 1],
  [5, 1],
  [6, 1],
  [7, 1],
  [8, 1]
]
const Game = {
  PlayerStatus: 1,
  Grabstate: 0,
  CheckU: 0,
  CheckL: 0
}

CheckUpdate();

console.log(Movement)

function CheckUpdate() {
  var uk = 3;
  var lk = 59
  for (var i = 0; i < 64; i++) {

    inc = 0
    if (ChessMap[i] === 70) {
      lk = i
      inc++;
    }
    if (ChessMap[i] === 7) {
      uk = i
      inc++
    }

    if (inc === 2) {
      break;
    }
  }

  var Matrix = []
  Matrix = Movement;


  var xu = Matrix[uk][0]
  var yu = Matrix[uk][1]
  var xl = Matrix[lk][0]
  var yl = Matrix[lk][1]

  //// upper king check list
  //hotizontal uk left check 

  for (var j = uk; j >= 0; j--) {
    var brker = 0;
    if (brker === 1) {
      break;
    }
    for (var n = xu; n >= 0; n--) {

      if (Matrix[j][0] = n && Matrix[j][1] === yu) {
        if (ChessMap[j] === 6 || ChessMap[j] === 8 || ChessMap[j] === 4 || ChessMap[j] === 3 || ChessMap[j] === 5) {
          brker = 1;
        }
        if (ChessMap[j] === 80 || ChessMap[j] === 70) {
          Game.CheckU = 1;
        }


      }
    }

  }
  /// horizontal uk right check

  for (var j = uk; j < uk + 7; j++) {
    var brker = 0;
    if (brker === 1) {
      break;
    }
    for (var n = xu; n < 8; n++) {

      if (Matrix[j][0] = n && Matrix[j][1] === yu) {
        if (ChessMap[j] === 6 || ChessMap[j] === 8 || ChessMap[j] === 4 || ChessMap[j] === 3 || ChessMap[j] === 5) {
          brker = 1;
        }
        if (ChessMap[j] === 80 || ChessMap[j] === 70) {
          Game.CheckU = 1;
        }
      }
    }
  }
  ////////////////////////////////    
  console.log(Game.CheckU)
}

标签: javascripthtmlcss

解决方案


Movement此代码正在修改您的数组:

if (Matrix[j][0]=n && Matrix[j][1]===yu)

您可能不小心使用了赋值运算符 ( =) 而不是相等运算符 ( ===)。


推荐阅读