当前位置: 首页 > 知识库问答 >
问题:

javascript - 在两个数之间,大于小的则++,小于大的则--,一直循环,如何做?

姚凯歌
2023-07-24

被一个简单的问题卡住了,变量a,在10和100之间,减到10则++,加到100则--,一直循环,最好只用一次setInterval如何做,只用变量a,不借助第二个变量,用if else和switch

共有3个答案

田永春
2023-07-24

用一个变量来保存每次的增量,1 或 -1,达到 100 改为 -1,退到 10 改为 1 即可。
下面这段代码为了不死循环,用 count 来控制了一下总量,设置成 100 可以看到 100 处的折回,但看不到回到 10 的再一次折返,改成 200 或者 1000 就能看到。

function doIt() {    let a = 10;    let delta = 1;     // 增量    let count = 0;    const timer = setInterval(() => {        a += delta;        if (a >= 100) {            delta = -1;        } else if (a <= 10) {            delta = 1;        }        console.log(a);        // 测试时为了不让它死循环,加了一个控制        if (++count > 100) {            clearInterval(timer);        }    }, 100);}doIt();

如果非要用 ++ 或者 -- 来算,可以把这两个操作封装成函数来处理,比如

function doIt() {    let a = 10;    const increase = () => a++;    const decrease = () => a--;    let calc = increase;    let count = 0;    const timer = setInterval(() => {        calc();        if (a >= 100) {            calc = decrease;        } else if (a <= 10) {            calc = increase;        }        console.log(a);        // 测试时为了不让它死循环,加了一个控制        if (++count > 200) {            clearInterval(timer);        }    }, 50);}

其中 calc = decreasecalc = increase 那里,也可以直接给 Lambda 或者函数,这样就不需要预定义加/减处理了函数了。只是从模块化的思想来考虑,这里预定义一下比较好。

丰胤运
2023-07-24
let a = 10;setInterval(() => {    if (a === 100) {        a = -100;    } else if (a === -10) {        a = 10;    } else {        a = a > 0 ? a + 10 : a - 10;    }    console.log(Math.abs(a));}, 1000);
卢权
2023-07-24
let a = 10;setInterval(() => {    if(a >= 100){       a = -100    }    a++    if(a >= -10 && a <= 10){        a = 10    }    console.log(Math.abs(a));}, 200);

最后输出的其实是Math.abs(a)并不是a

 类似资料:
  • 我有一个掷骰子猜谜游戏,我试图评估用户的输入,以确保他们不能输入小于1和大于6的数字,不幸的是,只有我的if语句,他们仍然可以输入这些数字,尽管显示一个字符串输入无效,我想做一个while循环,不断要求他们输入等于或大于1的有效数字和等于且小于 6,如果用户不断输入不正确的数字,while 循环将继续要求他们输入有效数字,直到他们输入一个,然后该数字将正常运行程序。

  • 我目前正在Codecademy上学习JavaScript,我遇到了一些问题。我在一个叫做“建造石头,布,剪刀”的部分,有一个部分有一个条件,如果数学。random()大于0.33小于0.66,计算机将选择纸张。我的问题是,如何建立一个if条件,即某个东西大于X,但同时小于Y?

  • 我想使用决策表实现基于流口水中较少和较大值的简单规则。 在drl中实现规则非常简单,例如: 但是我怎样才能把它翻译成流口水的决策表呢?到目前为止,我看到的所有例子都是在条件单元格中进行比较。甚至可以在值单元格中进行比较吗? 我看到的所有示例的格式如下: 但这只适用于1条规则,执行以下操作完全有不同的含义: 甚至可以执行以下操作吗? 实施这些规则的正确方式是什么?

  • 如果我有一个如下所示的数据帧, 我怎么能得到一个新的数据框只包含价格大于10美元(包括)和小于100美元(包括)像这样。谢谢。

  • 问题内容: 我有一个看起来像这样的表: 我想做的是返回一组行,其中值按’val’分组,并带有fkeys数组,但仅在fkeys数组大于1的情况下。因此,在上面的示例中,返回值将是看起来像: 我有以下查询聚合数组: 但这返回类似: 最好的方法是什么?我猜可能是将现有查询用作子查询,并对它进行求和/计数,但这似乎效率很低。任何反馈都将真正有帮助! 问题答案: Use子句过滤具有以下内容的组

  • 最近,我一直在处理一些紧凑的代码,我试图得到一个非常奇怪的尽可能小的循环。 我知道我可以让循环工作,比如一个if/ther语句,但是我正在寻找一种更小的方法来做到这一点,因为这使得代码大了两倍(更长的“循环”)。 那么是的,有什么办法可以做到这一点吗?还是我一直在用一个不同的角色做两个不同的循环?提前谢谢