Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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使用for循环将值推送到多维数组中_Javascript_Arrays_Multidimensional Array_Nested - Fatal编程技术网

Javascript使用for循环将值推送到多维数组中

Javascript使用for循环将值推送到多维数组中,javascript,arrays,multidimensional-array,nested,Javascript,Arrays,Multidimensional Array,Nested,我是Javascript新手,正在尝试为一门课程设置一个棋盘。我必须用黑色和红色的棋盘格来设置棋盘(即前三行代表红色,后三行代表黑色,每隔一块瓷砖都有一个棋盘格),我有点卡住了。我尝试了下面的代码,结果是var checker数组中的每个值都被打印为null,然后是四个'B。我想我需要以某种方式将数组的多维性合并到for循环中,但我不知道如何做到这一点。非常感谢任何指导或帮助 var checkerboard = [[null,null,null,null,null,null,null,null

我是Javascript新手,正在尝试为一门课程设置一个棋盘。我必须用黑色和红色的棋盘格来设置棋盘(即前三行代表红色,后三行代表黑色,每隔一块瓷砖都有一个棋盘格),我有点卡住了。我尝试了下面的代码,结果是
var checker
数组中的每个值都被打印为
null
,然后是四个
'B
。我想我需要以某种方式将数组的多维性合并到for循环中,但我不知道如何做到这一点。非常感谢任何指导或帮助

var checkerboard = [[null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null]];


function setUpRed(square) {
    return (square = 'R');
}

for (var i = 0; i < checkerboard [3][7]; i += 2 ) {
    checkerboard.push(setUpRed(checkerboard[i]));
}

function setUpBlack(square) {
    return (square = 'B');
}

for (var i = (checkerboard.length - 1); i > checkerboard [6][0]; i -= 2) {
    checkerboard.push(setUpBlack(checkerboard[i]));
}

console.log(checkerboard);
var checkboard=[[null,null,null,null,null,null,null,null],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零];
功能设置红色(方形){
返回(平方='R');
}
对于(变量i=0;i<棋盘[3][7];i+=2){
checkboard.push(设置红色(checkboard[i]);
}
功能设置黑色(方形){
返回值(平方='B');
}
对于(变量i=(checkboard.length-1);i>checkboard[6][0];i-=2){
checkboard.push(设置黑色(checkboard[i]);
}
控制台日志(棋盘格);

这就是你要找的吗

for(var i = 0; i < 3; i++){
 for(var j = 0; j < row.length; j++){
   checkerboard[i][j] = "RED"
 }  
}

for(var i = allrows - 3; i < 3; i++){
 for(var j = 0; j < row.length; j++){
   checkerboard[i][j] = "BLACK"
 }  
}
for(变量i=0;i<3;i++){
对于(var j=0;j
如果已经定义了棋盘,则不应推送项目。

var checkboard=[[null,null,null,null,null,null],
var checkerboard = [[null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null]];


for(var i = 0; i < 3; i++){
  for(var j = 0; j < 8; j+=2){
    if (i % 2) checkerboard[i][j] = "R";
    else checkerboard[i][j+1] = "R";
  }  
}

for(var i = checkerboard.length - 3; i < checkerboard.length ; i++){
  for(var j = 0; j < 8; j+=2){
    if (i%2) checkerboard[i][j] = "B";
    else checkerboard[i][j+1] = "B";
  }  
}

console.log(checkerboard);
[零,零,零,零,零,零,零,零,零], [零,零,零,零,零,零,零,零,零], [零,零,零,零,零,零,零,零,零], [零,零,零,零,零,零,零,零,零], [零,零,零,零,零,零,零,零,零], [零,零,零,零,零,零,零,零,零], [零,零,零,零,零,零,零,零,零]; 对于(变量i=0;i<3;i++){ 对于(var j=0;j<8;j+=2){ 如果(i%2)棋盘[i][j]=“R”; 其他棋盘[i][j+1]=“R”; } } 对于(var i=checkboard.length-3;i

我想你希望它看起来像一个使用棋盘格的普通棋盘。你会这样做的

首先,您的“for”条件是错误的

在第一个循环中,测试i是否<棋盘[3][7]。换句话说,您正在测试i是否 在第二个循环中,测试i是否>棋盘[6][0]。换句话说,您正在测试i>null(这与i>0相同)。另外,您可以使用i=(checkboard.length-1)初始化它,这意味着矩阵的最后一行(长度指的是顶级数组,其中包含这些行)。考虑到每次迭代将i减少2,您将在这里迭代4次

其次,您正在将值推入已填充的数组中。这将添加元素,而不是覆盖所需的位置。对于覆盖,必须通过索引直接写入到所需位置(行和列,两个维度)

因此,解决办法是:

for(var i = 0; i < 3; i++){
 for(var j = 0; j < checkerboard[i].length; j+=2){
   checkerboard[i][j] = "R";
 }  
}

for(var i = checkerboard.length - 1; i > checkerboard.length - 3; i--){
 for(var j = 0; j < checkerboard[i].length; j+=2){
   checkerboard[i][j] = "B";
 }  
}
for(变量i=0;i<3;i++){
对于(var j=0;j<棋盘[i]。长度;j+=2){
棋盘[i][j]=“R”;
}  
}
对于(变量i=checkboard.length-1;i>checkboard.length-3;i--){
对于(var j=0;j<棋盘[i]。长度;j+=2){
棋盘[i][j]=“B”;
}  
}

这只是代码的初始修复。您还需要在交替行中移动起始位置以获得正确的棋盘。

以下代码将正确设置两个玩家,并说明每个玩家中间行的偏移量

var checkboard=[[null,null,null,null,null,null,null,null],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零],
[零,零,零,零,零,零,零,零,零];
功能设置格(播放器、行、列){
棋盘[行][列]=玩家;
}
函数getPieceAt(行、列){
console.log(棋盘[row][col]| |“null”);
}
函数clearBoard(){
对于(i=0;ivar checkerboard = [[null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null],
                    [null,null,null,null,null,null,null,null]];

function setSquare(player, row, col) {
    checkerboard[row][col] = player;
}

function getPieceAt(row, col) {
    console.log(checkerboard[row][col] || 'null');
}

function clearBoard() {
    for (i = 0; i < checkerboard.length; i++) {
        checkerboard[i][i] = null;
    }
}

function setUpRed() {
    for (row = 0; row < 3; row++) {
        if ((row === 0) || (row === 2)) {
            for (col = 0; col < checkerboard[row].length; col += 2) {
            checkerboard[row][col] = "R";   
            }
        }
        else {
            for (col = 1; col < checkerboard[row].length; col += 2) {
            checkerboard[row][col] = "R";
            }
        }
    }
}

function setUpBlack() {
    for (row = 5; row < 8; row++) {
        if ((row === 5) || (row === 7)) {
            for (col = 1; col < checkerboard[row].length; col += 2) {
            checkerboard[row][col] = "B";   
            }
        }
        else {
            for (col = 0; col < checkerboard[row].length; col += 2) {
            checkerboard[row][col] = "B";
            }
        }
    }
}

setUpRed();

setUpBlack();

console.log(checkerboard);