【问题标题】:Loop through Switch statement in apps script循环遍历应用程序脚本中的 Switch 语句
【发布时间】:2018-10-09 19:48:04
【问题描述】:

我有一个由问题和答案组成的键值对对象。有几种不同的方式来提问,所以我尝试使用 switch 语句和 js 匹配函数对具有相同含义的问题进行分组。

{ 'Name?' : 'bob', q2: a2, .......}

我想遍历对象并找到数组元素和对象键之间的部分匹配。到目前为止,我有:

switch (/terms/.test(key)) {

  case ( terms ="Name|What's Your Name?"):
    text = "matched";
    break;

  default:
    text = "default";
    Logger.log(key);

}

        Logger.log(text)




  });

部分输出显示:

18-10-09 15:37:41:415 EDT] *What's Your Name?* 
[18-10-09 15:37:41:416 EDT] default

显然没有发生匹配。我怎样才能让它工作?

编辑:

我将代码更改为:

Object.keys(obj).forEach(function(key) {

switch (true) {

     case (/^Name|term2$/.test(key)):         
    text = "MATCHED!!!!";
    break;
  case 0:
  case 6:
    //        text = "It is Weekend";
    break;
  default:
    text = "default";
    Logger.log(key);

}

        Logger.log(text)


  });

仍然没有匹配。

【问题讨论】:

    标签: javascript google-apps-script


    【解决方案1】:

    您可以像这样组合开关盒:

    switch (key) {
      case 'Name':
      case 'What\'s Your Name?':
        // Do something
        break;
    
      default:
        // Do something
    }
    

    这段代码相当于:

    if (key === 'Name' || key === 'What\'s Your Name?') {
      // Do something
    } else {
     // Do something
    }
    

    【讨论】:

    • 如果我想在部分匹配的基础上做呢?
    • 如果我理解正确,我可以使用 .match 来检查 key 的子字符串(如果 key 很长)--stackoverflow.com/a/15201998/1592380
    • @user61629 是的,你可以,但你不需要。我的答案中的代码应该对您有所帮助。您无需在密钥中搜索任何子字符串。
    • 在这种情况下你是对的,所以我会接受你的回答(谢谢)。但是对于不同的情况,我仍然有兴趣知道如何在一个键中搜索多个子字符串。
    • @user61629 执行此操作的选项很少,但我建议使用 Array.prototype.includes:['term1', 'term2'].includes(string) 如果字符串等于数组中的一项,它将返回 true跨度>
    猜你喜欢
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2017-07-24
    相关资源
    最近更新 更多