如何将以下一系列for循环缩小为不那么紧凑的代码?

R K*_*R K 6 javascript optimization

我有以下代码遵循循环模式,我有一种感觉,代码可以缩小为代码或任何不那么难看的代码的递归,但我无法弄明白.

我想从跑了六圈在另一个内1000,以10000在JavaScript中,我看,如果能够再缩小代码.

我是编码初学者,但我可以接受各种方法.

我正在更新代码,因为以前的代码可能会让某些用户感到暧昧.

function dummyFunc(x,y){
    if( some logic for x == some logic for y){
         return true;
    }
    return false;
}

for(var i = 1000;i < 10000;i++){
  for(var j = 1000;j < 10000;j++){
    if(dummyFunc(i,j)){
      for(var k = 1000;k < 10000;k++){
        if(dummyFunc(j,k)){
          for(var l = 1000;l < 10000;l++){
            if(dummyFunc(k,l)){
              for(var m = 1000;m < 10000;m++){
                if(dummyFunc(l,m)){
                  for(var n = 1000;n < 10000;n++){
                     if(dummyFunc(m,n)){
                        break;
                     }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*lms 7

您可以将for循环提取到函数中:

 function range(start, end, callback) {
   for(let i = start, start < end, i++)
     callback(i);
 }
Run Code Online (Sandbox Code Playgroud)

这可以用作:

 range(1000, 10000, i => {
   range(1000, 10000, j => {
     range(1000, 10000, k => {
       range(1000, 10000, l => {
        range(1000, 10000, m => {
          range(1000, 10000, n => {
            console.log(i, j, k, l, m, n);
         });
       });
     });
   });
 });
Run Code Online (Sandbox Code Playgroud)

为了进一步简化,您可以使用生成可以解构的值数组的生成器:

  function* ranges(start, end, repeats) {
    if(repeats > 1) {
      for(const values of ranges(start, end, repeats - 1)) {
         for(const value of ranges(start, end, 0)) {
             yield values.concat(value);
         }
      }
    } else {
      for(let i = start; i < end; i++) 
        yield [i];
   }
}
Run Code Online (Sandbox Code Playgroud)

这可以用作:

  for(const [i, j, k, l, m, n] of ranges(1000, 10000, 6)) {
     console.log(i, j, k, l, m, n);
  }
Run Code Online (Sandbox Code Playgroud)

  • 他想要缩小代码.意思是更小的代码 (3认同)
  • @ k_1234导致OP要求它.他想要"不那么紧凑"的代码 (2认同)