繁体   English   中英

循环JavaScript的多维数组

[英]multidimensional array for loop javascript

我试图做一个for循环,以便如果前两个值中的任何一个与数组中的前一行匹配,则值0将变为1

因此,例如,第2行和第3行的0值将更改为1 ,因为第1行的值为13 ,这与第2行和第3行中的两个值之一匹配。

在这种情况下,所有值0最终都会全部变为1 (因为第4行将具有第2行和第3行的值)。

如何创建这样的循环?

edgeArray=[[1,3,0],
            [1,4,0],
            [2,3,0],
            [2,4,0]]

for(var counter = 1; counter =< edgeArray.length; counter ++ {
    if current edgeArray[i][j][0]  && previous edgeArray[i][j][0] on same row && edgeArray[i][j][0] == 
then edgeArray[i][j][0] = edgeArray[i][j][1] 

最终结果是

edgeArray=[[1,3,0],
        [1,4,1],
        [2,3,1],
        [2,4,1]]

不确定我是否完全理解,但这是您想要的吗?

for(var i = 1; i <= edgeArray.length; i ++) {
     // for each row (from second row onwards)
     if  (  edgeArray[i][0] == edgeArray[i-1][0]  
             // is the first val the same as prev row?
         || edgeArray[i][1] == edgeArray[i-1][1] 
             // or second val same as prev row?
         || edgeArray[i-1][2] == 1)  {
             // or is there already a '1' in 3rd col of prev row?
       edgeArray[i][2] = 1;
             // in that case change 3rd column to '1'
     }
 }

如果您不想将前1 “延续”到以后的行中,而只希望第3列仅反映前两行,则可以摆脱if语句中的第三个析取条件。

不确定我是否理解您的要求,但这会导致您想要的方式:

var edgeArray = [[1,3,0],
                 [1,4,0],
                 [2,3,0],
                 [2,4,0]];

var temp = [[],[]];

for(var i=0; i<edgeArray.length; i++){
    for(var j=0; j<2; j++){
        var found = temp[j].indexOf(edgeArray[i][j]);
        if(found > -1){
            edgeArray[i][2] = 1;
        }else{
            temp[j].push(edgeArray[i][j]);
        }
    }
    console.log(edgeArray[i].toString())
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM