Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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_Multidimensional Array - Fatal编程技术网

如何在javaScript中检查多维数组中两个元素是否并排

如何在javaScript中检查多维数组中两个元素是否并排,javascript,multidimensional-array,Javascript,Multidimensional Array,我将直截了当地说。。所以我创建了一个多维数组,它是这样的: var arr = []; for (var i = 0; i < 10; i++) { var sArr = []; for (var a = 0; a < 10; a++) { cell = Object.create(cellObj) sArr.push(cell); } arr.push(sArr); } var cellObj = {

我将直截了当地说。。所以我创建了一个多维数组,它是这样的:

var arr = [];

for (var i = 0; i < 10; i++) {

    var sArr = [];

    for (var a = 0; a < 10; a++) {

        cell = Object.create(cellObj)

        sArr.push(cell);

    }

    arr.push(sArr);

}
var cellObj = {

state: 0,
img: ""

};
//the array imgs contain two images

for (var l = 0; l < imgs.length; l++) {

    var x = Math.floor(Math.random() * arr.length);

    var y = Math.floor(Math.random() * arr[x].length);

    //here is a test to make sure that the two images are in two separate cells

    if (arr[x][y].state === 0) {

        arr[x][y].state = 3;

        arr[x][y].img = imgs[l];

    }
    else
    {
        l--;
    }

}
现在我已经完成了所有设置,我在多维数组中生成了两个图像,如下所示:

var arr = [];

for (var i = 0; i < 10; i++) {

    var sArr = [];

    for (var a = 0; a < 10; a++) {

        cell = Object.create(cellObj)

        sArr.push(cell);

    }

    arr.push(sArr);

}
var cellObj = {

state: 0,
img: ""

};
//the array imgs contain two images

for (var l = 0; l < imgs.length; l++) {

    var x = Math.floor(Math.random() * arr.length);

    var y = Math.floor(Math.random() * arr[x].length);

    //here is a test to make sure that the two images are in two separate cells

    if (arr[x][y].state === 0) {

        arr[x][y].state = 3;

        arr[x][y].img = imgs[l];

    }
    else
    {
        l--;
    }

}
//数组imgs包含两个图像
对于(var l=0;l
这两个图像可以在同一行或同一列上,中间有一个空单元格,但我不希望它们水平或垂直并排


我希望大家今天过得愉快,谢谢。

实现你所期待的目标最简单的方法就是提前消除这些选项。在下面的方法中,我创建了一个平面数组,其中包含数组中的所有位置(为了清晰起见,我将
arr
重命名为
arrayOfImages
),并将其命名为
coordLookup
。放置图像后,将从filter语句中的
coordLookup
中删除图像垂直和水平旁边的位置。我增加了测试图像的数量,以表明它保持了这种间距—请注意,如果您试图放置的图像数量超过阵列的容纳空间,它将开始失败,因此一定要为这种情况添加错误处理

(要查看此操作,请打开控制台并运行代码段,它应将完成的数组显示为一个表。)

var-cellObj={
州:0,
img:“
};
var arrayOfImages=[];
对于(变量i=0;i<10;i++){
var-sArr=[];
对于(var a=0;a<10;a++){
cell=Object.create(cellObj)
推力(电池);
}
阵列图像推送(sArr);
}
var coordLookup=[],i=10,j=10//创建坐标查找
而(--i>-1){
j=10
而(--j>-1){
coordLookup.push([i,j])
}
}
var imgs=['image1.jpg','image2.jpg','image1.jpg','image2.jpg','image1.jpg','image2.jpg','image1.jpg','image2.jpg','image1.jpg','image2.jpg']
对于(var l=0;l{
常数x=coordpair[0],_y=coordpair[1],

isMatch=(_y==y&&&&&u x>=prevX&&&u x=prevY&&u y row.map(cell=>JSON.stringify(cell))
那么你想要图像诊断吗?你试过使用位置坐标吗?创建另一对
x
y
以及
(x1!=x2)和(y1!=y2)
。注意
Math.random()的限制
您希望从0到11。您好,是这样,但我不知道如何获取元素的位置。@Daniel Möller我不明白为什么要创建另一个x和y。您能否解释一下,因为我不太擅长jscan图像,可以水平显示在一行中,但间距为1个单元格您好,谢谢您的努力,但是有没有一种更简单的方法来解决我的问题???@codeLearner这是我能想到的最简单的方法,从可用的选项中删除这些位置比尝试放置一个图像更有效,检查它是否属于那里,如果不属于,请再试一次(另外,您最初的代码示例可能会通过减少循环计数器而产生无限循环)。您向多维数组中添加的图像越多,计算出哪些点仍然打开的过程就越复杂和耗时。