用于循环javascript的多维数组

时间:2015-11-06 15:58:52

标签: javascript arrays loops multidimensional-array

如果前两个值中的任何一个与数组中的上一行匹配,我正在尝试进行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]]

2 个答案:

答案 0 :(得分:2)

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

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'
     }
 }

如果你不想继续&#39;以前的1到未来的行,你只想让第3列只反映前两行,然后在if语句中删除第三个析取条件。

答案 1 :(得分:1)

不确定我理解您的要求,但这会以您想要的方式产生:

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())
}