Javascript二维数组初始化

时间:2014-09-17 18:51:09

标签: 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(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");

根本不运行。这似乎在它之前已经存在错误。有什么意见吗?

2 个答案:

答案 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);
}