在循环内计算n次

时间:2018-11-09 07:38:50

标签: javascript math

我使用的代码

var loop = 1;
var task_n_time1 = 1; // skip n time from 1
var task_n_time2 = 5; // skip n time from 1
while(loop<20) {
  console.log(loop);
  if(loop%task_n_time1 == 0) {
    // do my task
    console.log("task_n_time1");
  }
  if(loop%task_n_time2 == 0) {
    // do my task
    console.log("task_n_time2");
  }
  loop++;
}

我没有得到想要的结果

*** task_n_time1每次执行

我想在if次之后执行n

示例:

如果使用task_n_time 1,则应以loop个计数[1] 2 [3] 4 [5] 6 [7] 8 [9]执行

如果使用task_n_time 2,则应以loop个计数[1] 2 3 [4] 5 6 [7] 8 9执行

如果使用task_n_time 3,则应以loop个计数[1] 2 3 4 [5] 6 7 8 [9]执行

*** if将执行[n]

2 个答案:

答案 0 :(得分:0)

从0开始计数,因此模表达式始终返回第一个条目。然后,对于第一个,您想要每隔第二个条目,对第三个,等等,等等,因此将一个添加到n:

var loop = 0;
var task_n_time1 = 1 + 1; // every other element: 0, 2, 4, 6, ...
var task_n_time2 = 5 + 1; // every sixth element: 0, 7, 13
while(loop < 19) // 19 times as before, but now 0 to 18 rather than 1 to 19
{
  console.log(loop);
  if(loop % task_n_time1 == 0)
  {
    // do my task
    console.log("task_n_time1");
  }
  if(loop % task_n_time2 == 0)
  {
    // do my task
    console.log("task_n_time2");
  }
  loop++;
}

当然,您也可以保留原始定义并改为更改公式:if( (loop - 1) % (task_n_time1 + 1) == 0) ...

答案 1 :(得分:0)

我不确定您是否了解主要目标。 对于task_n_time = 1,如您的帖子注释中所述,您的if语句将始终为true。 您的循环必须从1开始。 如果您想要所有的奇数,则必须采取其他方式。 您必须是:

if (loop%2 != 0 )

或:

task_n_time1 = 2;
if(loop%task_n_time1 != 0) ;

所有数字。

var loop = 1;
var task_n_time1 = 2; // skip n time from 1
var task_n_time2 = 5; // skip n time from 1
while(loop<20) {
   console.log(loop);
    if(loop%task_n_time1  != 0 || loop == 1) { // use a OR if you want to trigger it when loop == 1
        // do my task
        console.log( "task_n_time1");
    }
    if(loop%task_n_time2 == 0 || loop == 1) {
        // do my task
        console.log("task_n_time2");
    }
    loop++;
}