Javascript 如何在二维阵列中查找点的对角线
我有一个二维数组,如下所示:Javascript 如何在二维阵列中查找点的对角线,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一个二维数组,如下所示: const矩阵=[ [0, 0, 0, 0], [0, 2, 1, 0], [0, 1, 2, 0], [0, 0, 0, 0] ] 如果给定了单元格的x和y,例如2和1(matrix[2][1]是1),我如何找到所有通过所提供单元格的对角线(两个数组,每个数组都包含对角线中每个单元格的点)?矩阵(阵列)将始终是对称和方形的(确切地说,我有一个8x8网格) 例如: const矩阵=[ [0, 0, 0, 0], [0, 2, 1, 0], [0, 1, 2, 0]
const矩阵=[
[0, 0, 0, 0],
[0, 2, 1, 0],
[0, 1, 2, 0],
[0, 0, 0, 0]
]
如果给定了单元格的x
和y
,例如2
和1
(matrix[2][1]
是1
),我如何找到所有通过所提供单元格的对角线(两个数组,每个数组都包含对角线中每个单元格的点)?矩阵(阵列)将始终是对称和方形的(确切地说,我有一个8x8网格)
例如:
const矩阵=[
[0, 0, 0, 0],
[0, 2, 1, 0],
[0, 1, 2, 0],
[0, 0, 0, 0]
];
常数cellX=2,cellY=1;
//代码。。。
常量对角线fromtopleft=[0,1,0];
常量对角线fromtopright=[0,1,1,0]
如果你能找到每一条线,而不仅仅是对角线(垂直和水平,但我自己能计算出来),你就可以得到额外的分数。你可以迭代行(和相应的索引),并计算两条对角线上相应的x坐标。当它们在范围内时,可以将相应的值添加到相关数组中:
函数对角线(矩阵、单元格x、单元格y){
let forward=[];//根据正斜杠形状的对角线:/
设backward=[];//根据反斜杠形状的对角线:\
设n=矩阵长度;
矩阵.forEach((行,y)=>{
设x=cellX-(cellY-y);
如果(x>=0&&x=0&&x 日志(对角线(矩阵、单元格x、单元格y))代码>我假设输入矩阵并不总是对称的,对吗?另外,输入矩阵总是正方形吗?@yunzen它们总是对称的,正方形的,尽管它们会更大。确切地说,我将有一个8x8网格。@trincot两者都是基于0的。我解决了这个问题是的,特林科特。谢谢你指出这一点。我修好了,它能用!尽管我必须通读这些数学知识才能知道是怎么回事;)这看起来向前实际上是向后的。是的,这取决于你怎么称呼他们。我在“反斜杠”中使用了向后的like(\
),在“正斜杠”中使用了向前的like(/
)