遇到一个非常奇怪的 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 的长度为 1 的情况。如果它超过 1(用户输入“ExampleOne;ExampleTwo”),ExampleTwo 不会进入数组,并且
alert("wtf");
根本不运行。这看起来前面已经有错误了。有意见吗?
最佳答案
JavaScript 没有真正的二维数组。相反,您将第二个数组放入第一个数组中。将其更改为:
...
for(var counter = 0; counter < nameList.length; counter++){
controlArray[counter] = [true, new RegExp(nameList[counter],"g")];
...
关于Javascript二维数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25898190/