Javascript二维数组初始化
遇到一个非常奇怪的javascript问题。请参见下面的我的代码:Javascript二维数组初始化,javascript,arrays,type-2-dimension,Javascript,Arrays,Type 2 Dimension,遇到一个非常奇怪的javascript问题。请参见下面的我的代码: function initBadScripts(controlArray) { var scriptsLine = prompt("Please enter the bad scripts", "debug"); if (scriptsLine != null) { var pattern = /;/; var nameList = scriptsLine.split(patte
function initBadScripts(controlArray) {
var scriptsLine = prompt("Please enter the bad scripts", "debug");
if (scriptsLine != null) {
var pattern = /;/;
var nameList = scriptsLine.split(pattern);
alert(nameList+" "+nameList.length);
for(var counter = 0; counter < nameList.length; counter++){
controlArray[counter][0]=true;
controlArray[counter][1]= new RegExp(nameList[counter],"g");
alert(controlArray[counter][0]);
}
}
alert("wtf!");
}
var controlArray = [[]];
initBadScripts(controlArray);
该函数将创建一个名为“nameList”的数组
nameList=[ExampleOne,ExampleTwo];
然后,我想根据名称列表的长度对名为“controlArray”的二维数组进行动态初始化。然而,这只适用于名称列表的长度为1的情况。如果超过1(用户键入'ExampleOne;ExampleTwo'),则ExampleTwo不会进入数组,而
alert("wtf");
根本不跑。这似乎之前已经有一个错误。有什么评论吗?JavaScript没有真正的二维数组。而是在第一个数组中放置第二个数组。将其更改为:
...
for(var counter = 0; counter < nameList.length; counter++){
controlArray[counter] = [true, new RegExp(nameList[counter],"g")];
...
。。。
对于(变量计数器=0;计数器
是,或者您这样声明变量:
var controlArray = [[],[]];
或
var-controlArray=新数组(2);
对于(变量i=0;i<2;i++){
controlArray[i]=新数组(2);
}
使用您的开发工具和调试器查找错误。很抱歉,我正在编写一个油脂猴脚本,它通常无法调试。var pattern=/;/;
可能应该是var pattern=/;/g;
,否则它只会首先在输入中拾取;
,从而导致最大大小为2的数组。这不是问题。这适用于我。非常感谢。顺便问一下,我在第一个数组中放入第二个数组是什么意思?如果我们用不同的编码,您可以这样填充:var child1=[true,/abc/g];var child2=[true,/def/g];var controlArray=[child1,child2];
您已将子数组嵌套到父数组中。此controlArray和上面的controlArray是相同的。
var controlArray = [[],[]];
var controlArray = new Array(2);
for (var i = 0; i < 2; i++) {
controlArray[i] = new Array(2);
}