我正在尝试从AJAX请求中处理一系列可能的响应,并希望在switch语句中执行此操作。
data.message
保存了我感兴趣的信息,但它可以作为字符串或JSON对象返回
测试字符串很简单,但我想知道是否可以像这样做:
switch (data.message) {
case 'ok':
...
case 'another string':
...
case (this.id == 123):
...
}
我正在尝试从AJAX请求中处理一系列可能的响应,并希望在switch语句中执行此操作。
data.message
保存了我感兴趣的信息,但它可以作为字符串或JSON对象返回
测试字符串很简单,但我想知道是否可以像这样做:
switch (data.message) {
case 'ok':
...
case 'another string':
...
case (this.id == 123):
...
}
简单的回答是不支持。
作为解决方法,您可以尝试使用以下形式的开关:
switch (true) {
case (data.message === 'ok'):
...
case (data.message === 'another string'):
...
case (data.message.id == 123):
...
}
这可能比if-else语句的列表看起来更好。
JSON.stringify()
将对象转换为 JSON,然后针对 JSON 表示进行测试来完成。只需确保不包括任何额外的空格,因为这需要严格相同的 JSON(最好通过检查 console.log(JSON.stringify(data))
获取该值)。 switch (JSON.stringify(data)) {
case '{"message":"your message","anotherPropety":"another value"}' : {
// your logic
break;
}
default: {
// your logic
}
}
switch
语句的工作方式。 - Andy