【问题标题】:Return to while loop, after iteration - when condition is true again?迭代后返回while循环 - 当条件再次为真时?
【发布时间】:2018-04-10 02:45:00
【问题描述】:

我想知道是否可以返回到 while 循环,而不必重新输入一遍?

简单示例:

let sum = 0;
let value = 10;

while (sum < value) {
    // do code
    sum++;
};

// sum is changed for some reason outside of loop, after iteration
sum = 3

// iterate through the loop again?

而不是..

let sum = 0;  
let value = 10;

while (sum < value) {
    // do code
    sum++;
};

// sum is changed for some reason outside of loop, after iteration
sum = 3;

while (sum < value) {
  // do same code again
  sum++;
};

我想您可以使用 while 循环创建一个函数,但是否可以通过其他方式来处理它?

提前致谢。

【问题讨论】:

  • 为此制作函数
  • 这似乎是一个 XY 问题。这里没有足够的上下文来给出一个好的答案。
  • 也许问题不是那么清楚。我的while循环包含很多代码,循环之后我想再次使用它。但我想我必须为循环创建一个函数。
  • 是的,你必须创建一个函数、一个生成器、一个方法或其他任何东西。您需要一种方法来在更改变量时始终唤醒该 sn-p,如果处理器必须在每条指令处检查它会很繁重
  • 其实是有办法的,我来写一个答案

标签: javascript node.js while-loop iteration


【解决方案1】:

制作循环函数。函数有助于避免重复代码。

let sum = 0;  
let value = 10;

function loopy() {
  while (sum < value) {
      // do code
      console.log(sum++)
  };
}

loopy();

// sum is changed for some reason outside of loop, after iteration
sum = 3;

loopy();

【讨论】:

    【解决方案2】:

    如果您在 ES6 环境中,您可以使用 setter 来观察对象并在其属性之一发生更改时执行函数。

    let obj = {
      value: 20,
      set sum(sum) { 
        while (sum < this.value) {
          // some code
          sum++;
        }
      }
    };
    
    obj.sum = 5; // execute the code inside the while 15 times
    obj.sum = 10; // execute the code other 10 times
    

    你也可以看一眼Proxies

    【讨论】:

      【解决方案3】:

      函数是 JavaScript 的基本构建块之一。函数是一个 JavaScript 过程——一组执行任务或计算值的语句。要使用函数,您必须在要调用它的范围内的某个地方定义它。

      let sum = 0;  
      let value = 10;
      valueSum(sum , value);
      sum = 3;
      valueSum(sum , value);
      
      
      function valueSum(sum , Value){
      while (sum < value) {
          // do code
          sum++;
      };
      
      }
      

      【讨论】:

        【解决方案4】:

        您可以获取数组中的值并循环数组和for 循环内的while 循环。

        var sums = [0, 3],
            sum,
            value = 10,
            i;
        
        for (i = 0; i < sums.length; i++) {
            sum = sums[i];
            console.log('outer', sum);
            while (sum < value) {
                // do code
                sum++;
                console.log('inner', sum);
            }
        }
        .as-console-wrapper { max-height: 100% !important; top: 0; }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-24
          • 2021-11-17
          • 2014-03-03
          • 2016-08-07
          • 2015-03-23
          • 1970-01-01
          相关资源
          最近更新 更多