我使用的代码
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]
次
答案 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++;
}