遇到一个非常奇怪的JavaScript问题。请参阅下面的代码:
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);
我定义了一个函数,并调用该函数。名为'controlArray'的二维数组定义为没有值。基本上,该函数检查用户的输入并使用正则表达式来制作“名单”。例如,如果用户键入
ExampleOne;ExampleTwo
该函数将创建一个名为'nameList'的数组
nameList=[ExampleOne,ExampleTwo];
然后我想根据nameList的长度对名为'controlArray'的二维数组进行动态初始化。但是这只能在nameList'length为1时正常工作。如果它超过1(用户输入'ExampleOne; ExampleTwo'),则ExampleTwo不会进入数组,而
alert("wtf");
根本不运行。这似乎在它之前已经存在错误。有什么意见吗?
答案 0 :(得分:2)
JavaScript没有真正的二维数组。相反,你将第二个数组放在第一个数组中。将其更改为:
...
for(var counter = 0; counter < nameList.length; counter++){
controlArray[counter] = [true, new RegExp(nameList[counter],"g")];
...
答案 1 :(得分:0)
是或您将变量声明为:
var controlArray = [[],[]];
或
var controlArray = new Array(2);
for (var i = 0; i < 2; i++) {
controlArray[i] = new Array(2);
}