-2

j作为来自请求的结果,我有一个由以下元素(javascript)组成的拆分字符串。该字符串由相同的属性序列的三个重复组成。

var str_before_split="name1_address_telephone,name2_address_telephone,name3_address_telephone";

在逗号上拆分单独的字符串会给我一个由 3 个不同字符串组成的数组。所以,为了完成拆分,我使用了:(其中limit=3,数量可以变化)

for(var i=0; i<limit; i++) {  var everyString=separator[i].split("_"); //I checked each array position and is storing like charm.}

当我想为三个不同的类别创建三个不同的数组时,问题就出现了。所以,在最初的 for 循环中,我们有:(我再次发布循环)

var les=limit*3; //to see the maximum possible elements of the array

for(var i=0; i<limit; i++) {  var everyString=separator[i].split("_"); 


for(var j=0; j<les; j+3)
           {
         name[i]=everyString[j];
}

   for( j=3; i<les; j+3)
           {
         address[i]=everyString[j];
}

  for( j=6; i<les; j+3)
           {
         tel[i]=everyString[j];
}


}

每当在页面上运行时,脚本都会冻结。我的 JS 错误检测插件上没有出现任何错误。我尝试在小的 for 循环中警告数组,即使出现正确的结果,警告窗口也不会一遍又一遍地出现。有什么提示吗?

4

3 回答 3

5

这是一个无限循环:

for(var j=0; j<les; i+3)

循环变量在这里没有增加。i+3什么都不做,顺便说一下,变量应该是 j,而不是i.

使用这一行:

for(var j=0; j<les; j++)

但我认为你必须重新考虑整个事情。如果我没记错的话,你只想拥有所有姓名、所有地址和所有电话号码的数组:

var separator = str_before_split.split(",");
for(var i=0; i < separator.length; i++) {
    var everyString=separator[i].split("_"); 
    name[i]=everyString[0];
    address[i]=everyString[1];
    tel[i]=everyString[2];
}
于 2013-06-21T13:09:10.440 回答
4

如果您的中断条件基于 j,则除了 i 是错误变量之外:

for(var j=0; j<les; i+3)

i+3不会改变i– 的值,所以你的 for 循环会永远运行(好吧,只有第一个会运行,因为其他两个甚至没有机会被执行)。

于 2013-06-21T13:10:07.187 回答
2
for(var j=0; j<les; i+3)
           {
         name[i]=everyString[j];
}

这就是说,“设置j0。每次循环时,检查j都小于les。然后评估i+3(不同的变量),忽略结果并不理会j。” 你有一个无限循环,因为j从来都不是0,所以总是小于les

你需要这样的东西:

for(var j=0; j<les; j+=3)
           {
         name[i]=everyString[j];
}
于 2013-06-21T13:09:42.533 回答