如果前两个值中的任何一个与数组中的上一行匹配,我正在尝试进行for
循环,以使值0
更改为1
。
例如,第2行和第3行的0
值将更改为1
,因为第1行的值为1
和3
,其匹配第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]]
答案 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())
}