JavaScript for循环:跳过2个数字,后面跟着一组3

JavaScript for-loop: Skip 2 Numbers Followed by a set of 3

本文关键字:一组 循环 for 跳过 2个 数字 JavaScript      更新时间:2023-09-26

我编写了一个JavaScript循环,它跳过后面跟着一组三个数字的每一组两个数字。

考虑以下整数集:

1,2,3,4,5,6,7,8,9,10

这是数组的返回值:

1,2,3,6,7,8

看到它怎么跳过4-5和9-10了吗?(每一组有两个数字,后面跟着三个数字)

视觉:

<

1、2、3日strong> 4 , 5 , 6, 7, 8, 9 , 10 (跳过粗体数字)

这是我想到的:

var y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    for (var i = 0; i < y.length; i++) {
        if (y[i] >= 4 && y[i] <= 5) {
            continue;
        }
        if (y[i] >= 9 && y[i] <= 10) {
            continue;
        }
        document.write(y[i]);
    }

上面的for循环从12345678910返回123678。问题是我必须手动决定跳过哪些。是否有一种方法,可能与%模数,自动跳过一组两个数字后面跟着一组三个,而不限制长度为10 ?

处理的模式在5项之后重复,所以是的,您可以使用模运算符:

if (i % 5 < 3)
    document.write(y[i]);

看到@ysf评论后,我必须为看到这个答案的任何人解释我所做的事情-抱歉,如果存在糟糕的英语-

首先你需要分析事物,我们想要什么?在此基础上,一切都将迎刃而解

我们有一个数组,你想选择数字,然后跳过其他,对吧?为了实现这一点,我们将使用mod操作符"%"

如果我们想选择2个数字并跳过3个数字,选择2个跳过3个……等等)我们首先将pick + skip值相加,以便使其位于mod操作的右侧…在我们的例子中,2 + 3 = 5

let all = pick + skip;

为了从数组中选择,我不需要索引的值…我需要索引它self pick index[0] and index[1] skip index 2,3,4

因为我只想取2,那么我们的表达式将被限制为只有2,并且是拾取值和跳过值的总和

[index] % all < pick,所以如果索引mod all小于极限2,则取它,否则将其保留(跳过)

那么我们的循环结果将是这样的:

i % all < pick ===> 0 % 5 < 2 = true
i % all < pick ===> 1 % 5 < 2 = true
i % all < pick ===> 2 % 5 < 2 = false
i % all < pick ===> 3 % 5 < 2 = false
i % all < pick ===> 4 % 5 < 2 = false
i % all < pick ===> 5 % 5 < 2 = true
i % all < pick ===> 6 % 5 < 2 = true
i % all < pick ===> 7 % 5 < 2 = false
i % all < pick ===> 8 % 5 < 2 = false
i % all < pick ===> 9 % 5 < 2 = false
i % all < pick ===> 10 % 5 < 2 = true
i % all < pick ===> 11 % 5 < 2 = true

最后使用filter因为这是JS函数返回数组

const skip = (arr, pick, skip) => {
  let all = pick + skip;
  let filtered = arr.filter((_, i) => {
    return i % all < pick;
  });
  console.log(filtered);
};
}
skip([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],2,3);

这里是JSFiddle链接

var seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
  pick = 3,
  skip = 2;
var r = skipFilter(seq, pick, skip);
console.log(r);
function skipFilter(seq, pick, skip) {
  var stride = pick + skip;
  return seq.filter(function(_, i) {
    return i % stride < pick;
  });
}

for (var i=0; i < y.length; i++) {
  if (i % 5 < 3) {
    document.write(y[i] + ' ');
  } else {
    i += 1;
    document.write('<br>');
  }
}

你可以保留一个计数器

for (var i=0, j=0; i < y.length; i++) {
    if (j < 3) {
        document.write(y[i]);
    } else if ( j > 3) {
        j = -1;
    }
    j++;
}

小提琴

将"i"的增量移动到"for"的主体

    var y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    for (var i=0; i<y.length;) {
        console.log(y[i]);
        console.log(y[i+1]);
        console.log(y[i+2]);
        i = i + 5;
    }