我制作了一个JavaScript循环,跳过每组两个数字,然后是一组三个。
考虑以下整数集:
1,2,3,4,5,6,7,8,9,10
这是数组返回的内容:
1,2,3,6,7,8
看看它如何跳过4-5和9-10? (每组两个数字后跟一组三个)
视觉:
1,2,3, 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循环从123678
返回12345678910
。问题是我必须手动说出哪些要跳过。有没有办法,可能有%
模数,自动跳过每个两个数字的集合,然后是一组三个而不将长度限制为10?
答案 0 :(得分:5)
处理模式在5个项目后重复,所以是的,您可以使用模运算符:
if (i % 5 < 3)
document.write(y[i]);
答案 1 :(得分:2)
在看到@ysf评论后,我必须解释我为看到此答案的任何人所做的事情-如果存在不良英语,则抱歉-
首先您需要分析事物,我们想要什么?在此基础上,一切都会很好解决
所以我们有一个数组,您想选择数字并跳过其他内容吗?为了实现这一点,并知道我们将使用mod运算符“%”
如果我们要选择2个数字并跳过3个数字,请选择2个跳过3个……等等) 我们首先将pick + skip值相加,以使其位于mod操作的右边...在我们的情况下为2 + 3 = 5
let all = pick + skip;
为了从数组中进行选择,我不需要索引的值...我需要它自定义的索引index [0]和index [1]跳过索引2,3,4
因为我只想选择2个,所以我们的表达式将被限制为2个,并且选择和跳过值的总和
[index] % all < pick
,因此,如果所有索引mod均小于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
最后我们使用过滤器,因为这是一个返回数组的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);
答案 2 :(得分:1)
我的解决方案:
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;
});
}
JSFiddle:http://jsfiddle.net/BwyLY/
答案 3 :(得分:0)
你可以保留一个计数器
for (var i=0, j=0; i < y.length; i++) {
if (j < 3) {
document.write(y[i]);
} else if ( j > 3) {
j = -1;
}
j++;
}
答案 4 :(得分:0)
for (var i=0; i < y.length; i++) {
if (i % 5 < 3) {
document.write(y[i] + ' ');
} else {
i += 1;
document.write('<br>');
}
}
答案 5 :(得分:0)
移动&#34; i&#34; &#34;&#34;
增加到&#34;的主体self.layer.contents = UIImage(named: "freshBackground.png")?.CGImage