You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用API返回值匹配switch case失效问题排查(已校验类型)

解决Switch Case匹配字符串失效的问题

你的代码里if能匹配到"Resistor"但switch走default,核心原因大概率是字符串包含不可见的空白字符(比如前后空格、换行符、制表符),导致switch的严格全等匹配失败。

排查步骤

先打印字符串的长度和转义后的内容,确认是否有多余字符:

const resultString = String(response.data.body);
console.log('字符串长度:', resultString.length);
console.log('转义后内容:', JSON.stringify(resultString));

比如如果后端返回的是带空格的" Resistor",JSON.stringify会输出"\" Resistor\"",长度是8(正常"Resistor"长度是7)。

解决方法

1. 清理前后空白字符

用trim()方法去掉字符串前后的空白:

const resultString = String(response.data.body).trim();

// 后续的if和switch逻辑保持不变
if (resultString === "Resistor") {
  console.log("It is of 'string' type");
} else {
  console.log("It is not of 'string' type");
}

let value;
switch (resultString) {
  case 'Achiever':
    value = 10;
    break;
  case 'Initiator':
    value = 8;
    break;
  case 'Supporter':
    value = 6;
    break;
  case 'Follower':
    value = 4;
    break;
  case 'Resistor':
    value = 2;
    break;
  default:
    console.log('Unexpected value for response.data.body:', resultString);
    value = 0;
}

2. (可选)统一大小写

如果担心后端返回的字符串大小写不一致,可以先转成小写(或大写)再匹配:

const resultString = String(response.data.body).trim().toLowerCase();

let value;
switch (resultString) {
  case 'achiever':
    value = 10;
    break;
  case 'initiator':
    value = 8;
    break;
  case 'supporter':
    value = 6;
    break;
  case 'follower':
    value = 4;
    break;
  case 'resistor':
    value = 2;
    break;
  default:
    console.log('Unexpected value for response.data.body:', resultString);
    value = 0;
}

内容的提问来源于stack exchange,提问作者S D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:17:17