Javascript 为什么我的Switch语句案例不能触发精确的字符串匹配?

Javascript 为什么我的Switch语句案例不能触发精确的字符串匹配?,javascript,node.js,switch-statement,Javascript,Node.js,Switch Statement,转换语句背叛了我。。。下面的switch语句与任何案例都不匹配,而是每次打印default案例 我已经尝试删除默认情况,并在涉及的变量中添加类型检查,但它仍然不匹配。 我甚至手动重新键入了大小写字符串,以确保没有复制粘贴任何错误的字符。删除()字符也无济于事 字符串每次匹配1:1,类型始终为string。这些也是最后剩下的案例。之前还有10例患者,但所有患者均表现良好,并执行了预期的操作 如果有人知道这里出了什么问题,那就太棒了,提前谢谢你 const subUniName = sub.data

转换语句背叛了我。。。下面的switch语句与任何案例都不匹配,而是每次打印
default
案例

我已经尝试删除默认情况,并在涉及的变量中添加类型检查,但它仍然不匹配。 我甚至手动重新键入了大小写字符串,以确保没有复制粘贴任何错误的字符。删除
()
字符也无济于事

字符串每次匹配1:1,类型始终为
string
。这些也是最后剩下的案例。之前还有10例患者,但所有患者均表现良好,并执行了预期的操作

如果有人知道这里出了什么问题,那就太棒了,提前谢谢你

const subUniName = sub.data().university;  // Is always one of the cases, f.e.: 'Hochschule Fresenius (Wiesbaden)'

let correctUniName;

console.log('type of raw data: ' + typeof sub.data().university) // Logs string
console.log('type of raw data appended to const (same thing): ' + typeof subUniName) // Logs string
console.log('subUniName: ' + subUniName)

// Update University Name
switch (subUniName) {
    case "Hochschule Fresenius (Wiesbaden)":
        correctUniName = "Hochschule Fresenius University of Applied Sciences";
        break;
    case 'Hochschule RheinMain (Wiesbaden und Rüsselsheim)':
        correctUniName = "Hochschule RheinMain University of Applied Sciences Wiesbaden Rüsselsheim";
        break;
    case 'EBS Universität für Wirtschaft und Recht (Wiesbaden, Oestrich-Winkel)':
        correctUniName = "EBS Universität für Wirtschaft und Recht";
        break;
    case 'Hochschule Ruhr West (Mülheim, Bottrop)':
        correctUniName = "Hochschule Ruhr West University of Applied Sciences";
        break;
    case "Duale Hochschule Baden-Württemberg (Stuttgart)":
        correctUniName = "DHBW - Duale Hochschule Baden-Württemberg";
        break;
    case 'Hochschule Augsburg (HSA)':
        correctUniName = "Hochschule für angewandte Wissenschaften Augsburg - University of Applied Sciences";
        break;
    case 'Hochschule Karlsruhe - Technik und Wirtschaft':
        correctUniName = "Hochschule Karlsruhe - Technik und Wirtschaft - University of Applied Sciences";
        break;
    case 'Hochschule Westküste (Heide)':
        correctUniName = "";
        break;
    default:
        console.log(sub.data().university + ' not matched')
        break;
}
下面是一个实时示例,其中包含由
sub.data()返回的相同字符。university

以下是终端(运行节点)中输出的屏幕截图:

编辑:

刚刚尝试添加了一行
console.log(${subUniName}是否与Hochschule Fresenius(威斯巴登)匹配?${subUniName===“Hochschule Fresenius(威斯巴登)”}`)
一次
subUniName
应该返回true的是
Hochschule Fresenius(威斯巴登)

但是,它打印了以下内容:

霍克舒勒·费森尤斯(威斯巴登)和霍克舒勒·费森尤斯(威斯巴登)匹配吗?假的

我现在很困惑。
subUniName
ist
string
的类型,字符完全相同,没有空格或任何东西-我缺少什么

EDIT2:

这是我从
sub.data().university
获取的数据实时复制的问题,这些数据存储在一个数组中

对于“解决方案”,您可以尝试使用此映射功能:

// Return correct uni name.
function doUniMapping(uni) {
  uni = uni.trim();
  return uniMapping.hasOwnProperty(uni) ? 
  uniMapping[uni]: `University ${uni} not matches.`;
}
console.log(doUniMapping(subUniName));
这里是映射对象:

const uniMapping = {
  "Hochschule Fresenius (Wiesbaden)":
      "Hochschule Fresenius University of Applied Sciences",
  'Hochschule RheinMain (Wiesbaden und Rüsselsheim)':
      "Hochschule RheinMain University of Applied Sciences Wiesbaden Rüsselsheim",
  'EBS Universität für Wirtschaft und Recht (Wiesbaden, Oestrich-Winkel)':
      "EBS Universität für Wirtschaft und Recht",
  'Hochschule Ruhr West (Mülheim, Bottrop)':
      "Hochschule Ruhr West University of Applied Sciences",
  "Duale Hochschule Baden-Württemberg (Stuttgart)":
      "DHBW - Duale Hochschule Baden-Württemberg",
  'Hochschule Augsburg (HSA)':
      "Hochschule für angewandte Wissenschaften Augsburg - University of Applied Sciences",
  'Hochschule Karlsruhe - Technik und Wirtschaft':
      "Hochschule Karlsruhe - Technik und Wirtschaft - University of Applied Sciences",
  'Hochschule Westküste (Heide)':
      ""
};
下面是一个映射对象的完整工作示例:

我认为你的转换更好

下一次在问题中,插入一段与您的问题相关的代码,使用stackblitz或任何您喜欢的方法

我无法从您的屏幕截图中提取输出字符串,因此您必须自己尝试

编辑:字符串名和“(”之间有一个奇怪的空格字符:“”

下面是一个使用
replace
修改代码的工作示例:

我建议您从DB记录中删除该字符

EDIT2:下次使用记事本++之类的文本编辑器可以找到这些奇怪的字符时,请使用以下方法:

请向我们展示“subUniName”的输出示例。确保没有前导或尾随空格-这在进行调试输出时很容易被忽略,但当然会导致任何相等的比较。唯一的解释是,您的字符串不是完全匹配的。但是,由于您没有包含不起作用的情况,因此很难判断问题出在哪里。不要依赖于yo你的眼睛。有许多字符是“非印刷的”--换句话说,如果没有一点帮助,它们不会出现在屏幕上。一些文本编辑器可以提供帮助。我添加了终端输出的屏幕截图,并对每个日志进行了注释,以提高清晰度。据我所知,没有空格,我已经手动重新键入了所有字符串。@Heteric Monkey我使用的是VS代码,什么类型的非pr你在说什么输入字符?我尝试实现你的解决方案,但是它与任何字符串都不匹配。我现在创建一个stackblitz。你可以简单地用你的示例“subUniName”来“Fork”我的无效字符串。如果属性名使用的值与属性名使用的值相同,则映射对象将出现与
开关相同的问题。
大小写
值…True,但这是一种更好的映射方式(更紧凑、更灵活)缺少他的stackblitz,我们无法理解他接收到的字符是什么,我们看不到的字符是什么。当我们有了他的stackblitz,我们就会理解。编辑:字符串名称和之间有一个奇怪的空格字符:“”(”。这里是一个修改后的代码工作示例,使用
replace
:我建议您从数据库记录中删除该字符。