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循环中的数组,即使出现了正确的结果,提醒窗口也不会停止一次又一次地出现。有什么提示吗?
这是一个无限循环:
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];
}
如果中断条件基于j:,除了i是错误的变量之外
for(var j=0; j<les; i+3)
i+3
不会更改i
的值,因此for循环将永远运行(好吧,只有第一个循环会更改,因为其他两个循环甚至没有机会执行)。
for(var j=0; j<les; i+3)
{
name[i]=everyString[j];
}
也就是说,"将j
设置为0
。每次循环时,检查j
是否小于les
。然后计算i+3
(一个不同的变量),忽略结果,并保留j
。"你有一个无限循环,因为j
从来都不是0
,因此总是小于les
。
你需要这样的东西:
for(var j=0; j<les; j+=3)
{
name[i]=everyString[j];
}