JavaScript for循环:跳过2个数字,后面跟着一组3
JavaScript for-loop: Skip 2 Numbers Followed by a set of 3
我编写了一个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;
}
- 一次循环遍历一组
- 无限循环一组图像
- AJAX在数组循环中调用,只在上一次完成后调用next
- 循环遍历一组元素 jQuery
- 在一组形状元素中循环
- Ember循环遍历一组复选框并获取选中的项目
- 在没有循环的情况下测试一组元素之间的html5数据相等性
- 数组中具有一组值的循环迭代
- 循环通过一组鲈鱼CMS标语
- 循环通过一个数组创建一个二维数组-循环不工作
- 在简单的no中循环一组3个函数
- 如何使用JavaScript while循环输出一组给定的字符串
- 如何在Javascript中循环一组字符串?
- 在一组图标之间循环使用颜色
- JavaScript for循环:跳过2个数字,后面跟着一组3
- 使用Google Maps v3中的一个变量(循环、闭包)将事件侦听器附加到一组标记上
- 如何循环遍历一组jQuery元素—一次4个
- 如何获得由循环生成的一组下拉框的唯一ID
- 尝试使用滑动来循环使用Jquery的一组单选按钮
- 是否可以用jquery循环一组颜色?