使用javascript返回每第三个奇数? [已关闭]

问题描述 投票:0回答:4

我想做的只是返回指定范围内的每第三个奇数。

这对我来说有点奇怪,我尝试了一些不同的东西,但没有什么值得发布的,因为我的尝试没有产生接近我想要的结果,我有一种感觉,它超出了我当前能力的范围,任何帮助将不胜感激。预先感谢。

javascript function math numbers range
4个回答
0
投票

我会避免给你一个直接的代码答案。 (钓鱼>吃鱼)。

当您对具有相似因子的一组数字感兴趣时,一个好的经验法则是使用模运算符 (%)。 (我不知道这是否正式正确,但这就是我的想法)。

所以如果你想要所有偶数,你会这样做:

for (var i = 0; i < range; i++) {
    if (i % 2 == 0) print i;
}

如果您只想要每秒偶数,您能看到如何为此添加一个计数器吗? 最后,您能看到如何更改此设置以便获得每第三个奇数吗?


0
投票

您可以使用数组和过滤器:

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
 .filter( 
       function(a){
        this.x += !!(a%2) ? 1 : 0; 
        return !!(a%3) && !!!(this.x%3);
       }, {x:0});
 //=> [5, 11, 17]

另见


0
投票

尝试:

<script>
var range = 100;
var j = -1;
for (i = 0; i <= range; i++) {
    if (i % 2 == 1) {
        j++;
        if (j % 3 == 0) {
            alert(i);
        }
    }
   

 }
</script>

-1
投票

首先通过模 2 判断范围内的第一个数字是奇数还是偶数。

function getEveryThirdOdd(lowerBound, upperBound) {
    var x = (lowerBound+1)%2;

    var list = [];
    var k = 0;

    for(var i = lowerBound+x; i<=upperBound; i=i+6) {
        list[k] = i;
        k++;
    }

    return list;
}

此方法返回从 lowerBound 开始的每三个奇数(不是从零开始的每三个奇数)。如您所见,下层和上层都是包容性的。如果 lowerBound 是偶数,则与 2 的模运算将为零。这就是为什么我首先在 lowerBound 上加 1。使得(偶+1)=奇。奇数模 2 等于 1,因此从 lowerBound+1 开始:

for(var i = lowerBound+x; ...)
© www.soinside.com 2019 - 2024. All rights reserved.