Javascript 能否在Google脚本中向array.forEach添加标签?
我想使用Javascript 能否在Google脚本中向array.forEach添加标签?,javascript,loops,google-apps-script,anonymous-function,Javascript,Loops,Google Apps Script,Anonymous Function,我想使用array.forEach()循环遍历数组中的所有元素,并根据元素的值中断或继续迭代。但是,Google脚本编译器说,我需要在每个break或continue上都有一个标签。这可以按照以下要点完成吗 for( i in traces ){ environment = null; traces[i].servers.forEach( function(server){ if( server.environment=="DEVELOPMENT" ) environ
array.forEach(
)循环遍历数组中的所有元素,并根据元素的值中断或继续迭代。但是,Google脚本编译器说,我需要在每个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
}
});
. . .
}
或者,我怎样才能把整个事情做得更好呢?例如,这个变通方法怎么样?在这个变通方法中,它使用
some()
而不是forEach()
。如前所述,没有方法在forEach()
停止循环。在some()的情况下
,有一种停止循环的方法
修改点:
- 在这种情况下使用
时,可以通过返回some()
来停止循环。true
- 当未找到用于搜索的字符串值时,
返回res
false
- 当找到一个用于搜索的字符串值时,
返回res
true
- 当未找到用于搜索的字符串值时,
- 在这个修改后的脚本中,当发现
时,循环停止,开发
为res
true
- 即使找到
和QA
时,循环也不会停止,循环也会继续。例如,如果在找到PRODUCTION
时未找到QA
,则DEVELOPMENT
和environment
分别是res
和QA
。false
- 根据你的剧本,我认为你可能需要这样的流动
- 我使用了
而不是switch
进行此修改,因为它比if
快一点。测量结果是。从您的问题来看,我认为您可能需要成本较低的脚本。因此我使用了if
switch
如果我误解了您的要求,我很抱歉。根据MDN,“除了抛出异常之外,没有其他方法可以停止或中断forEach()循环。如果您需要这种行为,forEach()方法是错误的工具。”
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
}