Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在二维数组中,如何检查两个元素是否共享垂直/对角线?_Javascript_Arrays_Indexing_Matching - Fatal编程技术网

Javascript 在二维数组中,如何检查两个元素是否共享垂直/对角线?

Javascript 在二维数组中,如何检查两个元素是否共享垂直/对角线?,javascript,arrays,indexing,matching,Javascript,Arrays,Indexing,Matching,我有一个8x8“板”,想检查%符号是否在同一条垂直线上。我知道如何检查它们是否在同一水平线上(在同一数组中),但我不知道如何检查对角线和垂直线 这是我的全部代码: [[ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, %, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0 ], [ %, 0, 0, 0, 0,

我有一个8x8“板”,想检查%符号是否在同一条垂直线上。我知道如何检查它们是否在同一水平线上(在同一数组中),但我不知道如何检查对角线和垂直线

这是我的全部代码:

 [[ 0, 0, 0, 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0, %, 0, 0 ],
  [ 0, 0, 0, 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0, 0, 0, 0 ],
  [ %, 0, 0, 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0, 0, 0, 0 ]]
var-whiteQueen=[2,5];
var blackQueen=[5,0];
var危险=错误;
var板=
[
[0, 1, 2, 3, 4, 5, 6, 7],
[1, 1, 2, 3, 4, 5, 6, 7],
[2, 1, 2, 3, 4, 5, 6, 7],
[3, 1, 2, 3, 4, 5, 6, 7],
[4, 1, 2, 3, 4, 5, 6, 7],
[5, 1, 2, 3, 4, 5, 6, 7],
[6, 1, 2, 3, 4, 5, 6, 7],
[7, 1, 2, 3, 4, 5, 6, 7]
];
对于(i=0;i<8;i++){//plot white queen
如果(白皇后[0]==i){
对于(j=0;j<8;j++){
如果(白皇后[1]==j){
板[i][j]='x';
}
} 
}
}
对于(i=0;i<8;i++){//plot black queen
if(黑皇后[0]==i){
对于(j=0;j<8;j++){
如果(黑皇后[1]==j){
板[i][j]='x';
}
}
} 
}
对于(i=0;i<8;i++){//重置板号指南
对于(j=0;j<8;j++){
if(电路板类型[i][j]=“编号”){
板[i][j]=0;
}
}
} 
对于(i=0;i<8;i++){//re plot queen
对于(j=0;j<8;j++){
如果(板[i][j]='x'){
董事会[i][j]=1;
}
}
}
对于(i=0;i<8;i++){
var sameLineCount=0;
对于(x=0;x<8;x++){
如果(板[i][x]='x'){
if()//不知道如何注册匹配的线/对角线
sameLineCount+=1;
} 
}
}
/*[ [ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 1, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ] ]*/

所以,基本上这是一个棋盘,我正在获取一系列坐标,并检查两个皇后是否处于危险之中。我对所有的for循环都有点困惑,我不确定我是否以正确的方式进行了操作。

你可以得到你正在寻找的两个标志的位置并检查:

如果(x1==x2),则它们位于同一水平线上

如果(y1==y2),那么它们在同一条垂直线上

如果(| x1-x2 |=| y1-y2 |),则它们位于同一对角线上


请向我们展示您迄今为止的尝试。您需要在此处发布您迄今为止尝试的代码片段。SO中不允许指向代码段的外部链接。只需检查第一个属性的索引号是否等于第二个属性的索引号。我可以提供一个代码示例,如果您可以在这里发布您迄今为止尝试过的最短的相关代码片段。我的错误。后期编辑。谢谢。我会设法弄明白的。
var whiteQueen = [2, 5];
var blackQueen = [5, 0];
var danger = false;

var board =
[
  [0, 1, 2, 3, 4, 5, 6, 7],
  [1, 1, 2, 3, 4, 5, 6, 7],
  [2, 1, 2, 3, 4, 5, 6, 7],
  [3, 1, 2, 3, 4, 5, 6, 7],
  [4, 1, 2, 3, 4, 5, 6, 7],
  [5, 1, 2, 3, 4, 5, 6, 7],
  [6, 1, 2, 3, 4, 5, 6, 7],
  [7, 1, 2, 3, 4, 5, 6, 7]
];


for (i = 0; i < 8; i++) { //plot white queen
  if (whiteQueen[0] === i) {
    for (j = 0; j < 8; j ++) {
      if (whiteQueen[1] === j) {
        board[i][j] = 'x';
      }
    } 
  }
}

for (i = 0; i < 8; i++) { //plot black queen
  if (blackQueen[0] === i) {
    for (j = 0; j < 8; j ++) {
      if (blackQueen[1] === j) {
        board[i][j] = 'x';
      }
    }
  } 
}

for (i = 0; i < 8; i++) { //reset board number guide
  for (j = 0; j < 8; j++) {
    if (typeof board[i][j] == 'number') {
     board[i][j] = 0;
    }
  }
} 

for (i = 0; i < 8; i++) { //re-plot queens
  for (j = 0; j < 8; j++) {
    if (board[i][j] === 'x') {
      board[i][j] = 1;
    }
  }
}

for (i = 0; i < 8; i++) {
  var sameLineCount = 0;
  for (x = 0; x < 8; x++) {
    if (board[i][x] == 'x') { 
      if () // no idea how to register a matching line/diagonal
      sameLineCount += 1;
    } 
  }
}

/*[ [ 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ 0, 0, 0, 0, 0, 1, 0, 0 ],
    [ 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ 1, 0, 0, 0, 0, 0, 0, 0 ],
    [ 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ 0, 0, 0, 0, 0, 0, 0, 0 ] ]*/