首页 > js循环生成数据

js循环生成数据

用JavaScript生成“12345432123454321...”这种数据


以上是我表达的不清楚

用个例子说的更清楚一点:
每隔1秒钟,打印一个数字,这个数字从最小值1开始加1递增,到最大值5的时候,再依次递减,减小到1的时候,再进行递增,这种循环

最终打印出来的结果就是类似于“123454321234543212...”这种无限下去的数据


// 在min和max之间循环
function count(min, max) {
    var i = min;
    var step = -1;
    setInterval(function(){
        console.log(i);
        if(i == min || i == max) {
            step *= -1;
        }
        i += step;
    }, 1000)
}

count(1, 5);
count(2, 15);

这样?


1+23454321+23454321……


参考下~~

function launch(max,maxLoop){
    maxLoop=maxLoop||1;
    max=max||10;
    var currentLoopTimes=-1,i= 1,step=-1,result="";
    while(i<=max){
        result=result+''+i;
        if(i===max||i===1){
            step=step*-1;
            if(i===1){
               currentLoopTimes++;
            }
        }
        if(currentLoopTimes===maxLoop){
            break;
        }
        i=i+step;

    }
    return result;

}

console.log(launch(5,2));//输出12345432123454321

如果是按每按时间递增到某个数值后再递减到1,再递增这种循环要求的话

var numPlayer=(function(max, intervalMilliseconds){
  var intervalTimer; 
  max=max||10;
  intervalMilliseconds= intervalMilliseconds||1000;

  function start(callBack){
    var currentLoopTimes=-1,i= 1,step=-1,result="";
    intervalTimer =setInterval(function(){
        result=result+''+i;
        if(i===max||i===1){
            step=step*-1;
            if(i===1){
               currentLoopTimes++;
            }
        }
        callBack&&callBack(result,i+'');
        i=i+step;
        
    }, intervalMilliseconds);
 }

 function stop(){
    intervalTimer&&clearInterval(intervalTimer);
 }

 return {
     start:start,
     stop:stop
  }
}(5));

numPlayer.start(function(fullyNumberStr,currentNumberStr){
    console.log(fullyNumberStr);
});

//测试在10秒后结束
setTimeout(function(){
  numPlayer.stop();
},10000);

(function(n){
    var i = 0, str = '';
    while(i < n){
        str += Math.abs(i % 4 + 1 - ~~(i / 4) % 2 * 6);
        i++;
    }
    return str;
})(20);
//输出 "12345432123454321234"

其实还有更直接的……

var n = 20,
str = Array(n + 8).join(",").replace(/,{8}/g, "12345432").slice(0, n);
//输出 "12345432123454321234"

居然修改问题了,表示懒得按照你的要求写完整的代码,如果你能看得懂这一段的代码的话,自己改一改就知道了

(function(n){
    return Math.abs(n % 4 + 1 - ~~(n / 4) % 2 * 6);
})(19);
//输出 "4"

一个while里面套两个for。
用来干嘛?

【热门文章】
【热门文章】