用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。
用来干嘛?