Javascript:在使用嵌套for循环时,增加for循环中的数组元素&;二维阵列

Javascript:在使用嵌套for循环时,增加for循环中的数组元素&;二维阵列,javascript,arrays,for-loop,multidimensional-array,nested-loops,Javascript,Arrays,For Loop,Multidimensional Array,Nested Loops,我有一个数组,如下所示: 矩阵=[[0,1,1,2],[0,5,0,0],[2,0,3,3]] 我想遍历这个嵌套数组,并将每个数组中的元素与其他数组中的对应元素进行比较,即将第二个数组中的5(第1个元素)与第一个数组中的1(第1个元素)以及第三个数组中的0(第1个元素)进行比较。我想检查当前数组中的元素是否在其他数组中有一个等于0的对应元素 所以基本上我想在嵌套的for循环中比较[0][0]与[1][0]和[2][0],[0][1]与[2][1]和[3][1],等等 以下是我尝试过的: func

我有一个数组,如下所示:

矩阵=[[0,1,1,2],[0,5,0,0],[2,0,3,3]]

我想遍历这个嵌套数组,并将每个数组中的元素与其他数组中的对应元素进行比较,即将第二个数组中的
5
(第1个元素)与第一个数组中的
1
(第1个元素)以及第三个数组中的
0
(第1个元素)进行比较。我想检查当前数组中的元素是否在其他数组中有一个等于0的对应元素

所以基本上我想在嵌套的for循环中比较[0][0]与[1][0]和[2][0],[0][1]与[2][1]和[3][1],等等

以下是我尝试过的:

function matrixElementsSum(matrix) {
    let total = 0;
    let arr = [];

    for(let i = 0; i < matrix.length; i++) {
        for(let j = 0; j < matrix[i].length; j++) {
            if(matrix[i][j] != 0 && matrix[i + 1][j] != 0) {
                console.log(matrix[i][j]);
            }
        }
    }  
}
函数矩阵素总和(矩阵){
设total=0;
设arr=[];
for(设i=0;i
if语句的这一部分会导致
未定义的
错误:
&&matrix[i+1][j]!=0


在常规数组/for循环中,我们可以增加
i
,将当前元素与下一个元素进行比较。使用数组数组时,如何在嵌套for循环中执行此操作?

如果子数组的长度相同,您只需迭代第一个子数组的元素并将其与对应的元素进行比较,如果我理解正确,我认为这将为您做到:

var matrix =  [[0,1,1,2], [0,5,0,0], [2,0,3,3]]
var len = matrix[0].length
var flatArray = matrix.flat()
for(let index=0;index<len;index++){
if(flatArray[index] !== 0 && flatArray[index + len] !== 0 && flatArray[index 
+ 2*len] !== 0)
console.log(index,flatArray[index])
}
var矩阵=[[0,1,1,2],[0,5,0,0],[2,0,3,3]]
var len=矩阵[0]。长度
var flatArray=matrix.flat()

对于(让index=0;index而不是嵌套循环),您可以使用并获取内部数组中的所有迭代器,然后使用它们的输出直到完成。这可以简化您处理数据的方式,因为每次迭代都只有来自每个数组的当前顺序项:

函数比较(矩阵){
//获取子数组的所有迭代器
常量迭代器=matrix.map(sub=>sub[Symbol.iterator]());
while(true){
//推进所有迭代器并获取结果
设res=iterators.map(it=>it.next());
//如果完成任何操作,则终止
如果(res.some(r=>r.done))中断;
//获取值
让currentValues=res.map(({value})=>value);
//对他们做点什么
const allEqual=currentValues.every(函数(值){
返回值===this;
},当前值[0]);
日志(currentValues,allEqual);
}
}

比较所有([[0,1,1,2],[0,5,0,0],[2,0,3]);
请添加所需的结果。函数名是否反映了用途?
矩阵[i+1]
将超出
i==矩阵的范围。长度