如何在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这是我能想到的最简单的方法,从可用的选项中删除这些位置比尝试放置一个图像更有效,检查它是否属于那里,如果不属于,请再试一次(另外,您最初的代码示例可能会通过减少循环计数器而产生无限循环)。您向多维数组中添加的图像越多,计算出哪些点仍然打开的过程就越复杂和耗时。