Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript循环意外行为_Javascript_Loops_For Loop - Fatal编程技术网

Javascript循环意外行为

Javascript循环意外行为,javascript,loops,for-loop,Javascript,Loops,For Loop,这是我的函数,它应该以5行为一组来打断字符串,但不知何故,循环显示了意外的行为,警报(数据)打印了4个而不是5个字符串。我错过了什么 function returnwasset(somedata) { alert(somedata); var lines = somedata.split('\n'); var counter = 1; var data = ""; for (var i = 0; i < lines.length; i++, coun

这是我的函数,它应该以5行为一组来打断字符串,但不知何故,循环显示了意外的行为,警报(数据)打印了4个而不是5个字符串。我错过了什么

function returnwasset(somedata) {
    alert(somedata);
    var lines = somedata.split('\n');
    var counter = 1;
    var data = "";
    for (var i = 0; i < lines.length; i++, counter++) {
        if (counter % 5 === 0) {
            alert(data);
            data = "";
            counter = 1;
        }
        data = data + "\n" + lines[i];
    }
}
函数returnwasset(somedata){
警报(某些数据);
var lines=somedata.split('\n');
var计数器=1;
var数据=”;
对于(变量i=0;i
将代码更改为:

data=data+"\n"+lines[i];
if(counter%5===0)
{
    alert(data);
    data="";
    counter=1;
}
所以您首先附加数据,然后显示该数据。循环退出后,应检查最后几行小于5的计数器变量,如:

if (counter < 5) {
    alert(data);
}
if(计数器<5){
警报(数据);
}

尝试使用下面的函数以预定义的行数显示字符串。它将整个字符串拆分为五行

function returnwasset(somedata){
    var lines = str.split(' ');
    var wordsperline = parseInt(lines.length / 5);
    var finalline = parseInt(lines.length % 5);
    //alert(lines.length);
    var result = "";
    var counter = 0;
    for(var i = 0; i < 5; i++){
        if(i != 4){
            for(var j = 0; j < wordsperline; j++){
                result += lines[counter] + " ";
                counter++;
            }
            result += "\n";
        }
        else{
            for(var k = 0; k < (wordsperline + finalline); k++){
                result += lines[counter] + " ";
                counter++;
            }          
        }
    }

    alert(result);
}
函数returnwasset(somedata){
变量行=str.split(“”);
var wordsperline=parseInt(lines.length/5);
var finalline=parseInt(lines.length%5);
//警报(行数、长度);
var结果=”;
var计数器=0;
对于(变量i=0;i<5;i++){
如果(i!=4){
对于(var j=0;j

您不需要额外的
计数器,您可以使用迭代索引进行计算

var testData='0131192002197143012419001189107 012419002540761 012420002277776 012421009834353 0131192002197143012419001189107 012419002540761 012420002277776 012421009834353'。拆分('')。联接(“\n”);
函数returnwasset(somedata){
警报(某些数据);
变量行=somedata.split(“\n”);
var数据=”;
对于(变量i=0;ireturnwasset(testData)
错误原因是
计数器
值在第五个循环结束时变为
2
,因为每次循环后计数器都会递增,所以如果满足条件,只需将
计数器设为0
。因此,当第五个循环完成时,
计数器将显示一个值
1
:-

var a='01192002197143\n012419001189107\n012419002540761\n012420002277776\n012421009834353\n01192002197143\n01241900118910\n012419002540761\n012420002277776\n012421009834353';
函数returnwasset(somedata){
警报(某些数据);
var lines=somedata.split('\n');
var计数器=1;
var数据=”;
对于(变量i=0;iwindow.onload=returnwasset(a)这里有一种方法扩展了almas的想法,并消除了循环后对
计数器
变量或额外代码的需要

只需将
for
循环替换为以下内容:

for (var i = 0; i < lines.length; i++) {
    data += lines[i] + "\n";
    if ((i % 5 === 0 && i > 0) || (i + 1) === lines.length) {
        alert(data);
        data = "";
    }
}
for(变量i=0;i0)| |(i+1)==lines.length){
警报(数据);
数据=”;
}
}

编辑了问题,请再次阅读此处的样本数据以测试013192002197143012419001189107 012419002540761 01242000227776 012421009834353 013192002197197143012419001189107 012419002540761 01242000227776 012421009834353 P.s.每个数字都在新的一行。这一行正在打印9个条目,将第二组中的最后一个条目保留到10个条目的样本中,理想情况下应该是2组5人