代码之家  ›  专栏  ›  技术社区  ›  citizen

你能把一个标签加在一张纸上吗数组.forEach用谷歌脚本?

  •  1
  • citizen  · 技术社区  · 6 年前

    我想使用 array.forEach( break continue

    for( i in traces ){
      environment = null;
      traces[i].servers.forEach( function(server){
        if( server.environment=="DEVELOPMENT" )
          environment = "DEVELOPMENT";
          break;  // got the earliest environment so no reason to keep on looking
        }
        if( server.environment=="QA" )
          environment = "QA";
          continue; // might get DEVELOPMENT next time
        }
        if( server.environment=="PRODUCTION" )
          environment = "PRODUCTION";
          continue; // might get DEVELOPMENT or QA next time
        }        
      });
      . . .
    }
    

    或者,我怎么能把这整件事做得更好呢?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Tanaike    6 年前

    例如,这个变通方法怎么样?在此解决方案中,它使用 some() 而不是 forEach() . 没有任何方法可以停止循环 forEach() @Cooper 提到。如果是 一些() ,有一种停止循环的方法。

    修改点:

    • 在这种情况下,可以通过返回 true .
      • res 退货 false .
      • 当找到要搜索的字符串值之一时, 物件 退货 是的 .

    修改脚本:

    for( i in traces) {
      environment = null;
      var res = traces[i].servers.some(function(server) {
        switch (server.environment) {
          case "DEVELOPMENT":
            environment = "DEVELOPMENT";
            return true;
          case "QA":
            environment = "QA";
            break;
          case "PRODUCTION":
            environment = "PRODUCTION";
            break;
        }
      });
    
    // do something
    
    }
    

    注:

    • 在这个修改过的脚本中,当 DEVELOPMENT 找到,循环停止并 物件 是的 .
    • 即使在什么时候 QA PRODUCTION 发展 质量保证 找到了, environment 物件 分别是。
    • 我曾经 switch 而不是 if 如果 . 测量这个的结果是 here 转换 .

    参考文献:

    如果我误解了你的意思,我很抱歉。