1

我一定遗漏了一些基本的东西,但是当在嵌套循环中调用全局多维数组变量时,我几乎对这个查询感到厌烦

代码:

//global variable

line2 = new Array();

$.fn.gtest = function(){

var values1 =  "a,s";

    lines = values1.split(',');
    //First Loop
    $.each(lines, function(lineNo, line) {
    //second Loop
             for( var datavalueNo = 0; datavalueNo < 5; datavalueNo++) {
                        line2[datavalueNo] = new Array();
                        line2[datavalueNo][lineNo] = new Array();
                        line2[datavalueNo][lineNo][0] = "Test";
                        line2[datavalueNo][lineNo][1] = "1";
             }

    });

};

在第一个循环结束时 line2 的值为:Test,1,Test,1,Test,1,Test,1,Test,1

在第二个循环结束时 line2 的值为: ,Test,1,,Test,1,,Test,1,,Test,1,,Test,1

for 循环被调用两次。

从第一次第二次循环(称为第一次的 for 循环)填充到 line2 的所有值都消失了,只剩下第二次第二次循环的值(称为第二次的相同 for 循环)。

我希望我能够使我的查询清楚。

4

1 回答 1

0

您覆盖值的原因是line2[datavalueNo] = new Array();

您必须检查之前是否定义了此变量:

  //global variable
  var line2 = [];
  $.fn.gtest = function(){
    var values1 = "a,s",
        lines = values1.split(',');
    $.each(lines, function(lineNo, line) {
      for(var datavalueNo = 0; datavalueNo < 5; datavalueNo++) {
        if(line2[datavalueNo] === undefined) {
           line2[datavalueNo] = [];
        }
        line2[datavalueNo].push(["Test",1]);
      }
    });
  };

http://jsfiddle.net/qgeqy/

于 2013-04-03T19:54:59.390 回答