【发布时间】:2019-05-26 20:40:58
【问题描述】:
我正在尝试创建函数来区分两个二维数组,但我发现要使 function removeArray() 工作,需要在两个函数中采用不同的计数器变量。如果两者都采用i,则循环只迭代一次,它应该迭代两次。
function removeArray(toremove, myarray){
for(i=0; i< toremove.length ; i++){
// console.log(getIndex(toremove[i],myarray));
myarray.splice(getIndex(toremove[i],myarray),1);
console.log("" + myarray); //only [2,3] will get remove
}
}
function getIndex(array, myarray){
for(i=0;i< myarray.length ; i++){
// if(typeof(array)== 'undefined'){console.log("error"); return 100;}
if((myarray[i][0] == array[0]) && (myarray[i][1] == array[1])){
return i;
}
}
}
var myarray=[[1,1],[1,2],[1,3],[1,4],[2,1],[2,2],[2,3],[2,4],[3,1],[3,2],[3,3],[3,4],[4,1],[4,2],[4,3],[4,4]];
var toremove=[[2,3],[3,3]];
removeArray(toremove,myarray);
此外,当包含注释部分时(两者一起),即// console.log(getIndex(toremove[i],myarray)) 和// if(typeof(array)== 'undefined'){console.log("error"); return 100}it 会在不超过两次的地方无限迭代。
为什么会这样?请帮忙。提前致谢!
【问题讨论】:
-
这不是二维数组,而是数组的数组。 JS没有二维数组的概念。
-
您应该使用
var或let定义计数器变量,否则它们是同一个全局变量:for (let i = 0; .......
标签: javascript function for-loop multidimensional-array scope