带通配符的Javascript switch语句?

tar*_*eld 2 javascript jquery wildcard switch-statement

如果我的javascript ajaxes到我的服务器并返回49明文格式的ID [49]是有一种方式,我做这样的事情...(我已经测试,并没有工作)

switch(data)
{
    case '[*]':
        (..etc.)
    break;
}
Run Code Online (Sandbox Code Playgroud)

通配符是哪里*,我想确保它被包含在两个方括号内?

因为我需要检查是否有其他单词返回error,我保留了default意外错误,任何想法?:) 谢谢!

Tra*_*er1 11

您可以明确地切换到true,这将对每个case语句使用评估.

switch (true) {
    case ((/^\[\d+\]$/).test(data)):
       //matches data;
       break;
    case (data == "something else"):
       //...
       break;
    default:
       //...
}
Run Code Online (Sandbox Code Playgroud)

但是,如果你有少于4-5个案例,那么最好使用if/else if/else if/else blocks.

if ((/^\[\d+\]$/).test(data)) {
       //matches data;
} else if (data == "something else") {
       //...
} else {
       //...
}
Run Code Online (Sandbox Code Playgroud)

我通常在我的响应方法中对服务/休息调用进行一些错误捕获,这样如果出现错误,我几乎总是返回一个带有错误属性的正确json.

try {
  if (response.responseText.indexOf("<html") >= 0) { 
    throw response.responseText;
  }

  var data = JSON.parse(response.responseText);
  if (data.error) 
    throw data.error;

  //handle response data object.
  if ((/^\[\d+\]$/).test(data)) {
    //matches data;
  } else if (data == "something else") {
    //...
  } else {
    //...
  }
} catch(err) {
  if (err && err.message) {
      //use err.message
  } else if (err && err.toString().indexOf("<html") >= 0) {
      //handle error text
  }
}
Run Code Online (Sandbox Code Playgroud)