迭代给定的序列

时间:2014-04-04 15:37:14

标签: javascript for-loop

我需要循环从1到96的数字,跳过一些值:

2, 4, 5, 7, 10, 12, 13, 15, 18, 20, ..., 81, 83, 86, 88, 89, 91, 94, 96

我尝试了各种各样的循环,但它们都完全失败了,虽然我已经尝试过,但从我的角度来看,他们真的不值得看。

感谢任何指导。

由于投诉和混淆,他们的整个模式应该是 2,4,5,7,10,12,13,15, 17,19,22,24,25,27,30,32, 34,36,37,39,42,44,45,47, 49,51,54,56,57,59,62,64, 66,68,69,71,74,76,77,79, 81,83,86,88,89,91,94,96。

再次感谢! :)

3 个答案:

答案 0 :(得分:1)

这是有效的(即使它不是我写过的最漂亮的代码):

    var even = true;
    var cpt = 0;
    var s = '';
    var i = 1;
    while (i <= 96){
        if (even){
            if (i%2 == 0){
                s += i + ',';
                cpt++;
            }
            if (cpt == 2){
                even = !even;
                cpt = 0;
            }
        }else{//odd             
            if (i%2 == 1){
                s += i + ',';
                cpt++;
            }
            if (cpt == 2){
                even = !even;
                cpt = 0;
                i++;
            }
        }
        i++;
    }
    alert(s);

返回:

2,4,5,7,10,12,13,15,18,20,21,23,26,28,29,31,34,36,37,39,42,44,45,47,50,52,53,55,58,60,61,63,66,68,69,71,74,76,77,79,82,84,85,87,90,92,93,95,

这不是完全相同的结果或结束,但开始时的行为受到尊重

答案 1 :(得分:0)

一种可能的方法:

for (var i = 2; i < 96; i++) {
  console.log(i);
  console.log(i+=2);
  i & 1  &&  (i+=2);
}

...但是93, 95结束了,因为你实际上并没有检查该序列应该如何结束。提示:它不是94, 96

答案 2 :(得分:0)

for (var i=1; i < 49; i++)
  console.log(2 * i - Math.floor((i - 1) % 4 / 2));

在此序列中显示2 * i,减零或一[0,0,1,1,0,0,1,1,...]