Javascript 返回未定义的Switch语句

Javascript 返回未定义的Switch语句,javascript,Javascript,我正在学习开关,我正在尝试这个问题,我应该传入一个字符串,如果字符串的第一个字母是数组a中的任何一个元素,那么函数getLetter()应该返回“a”。对于数组B、C、D,情况类似。我尝试了上面的代码,但它返回的是未定义的。我做错了什么?您需要检查布尔值,如true,因为您使用includes,它返回true或false 顺便说一句,通过在每个案例中使用return,您可以省略break,因为函数以return退出,该函数也会退出 函数getLetter(s){ 设字母=s[0]; //在这里

我正在学习开关,我正在尝试这个问题,我应该传入一个字符串,如果字符串的第一个字母是数组a中的任何一个元素,那么函数getLetter()应该返回“a”。对于数组B、C、D,情况类似。我尝试了上面的代码,但它返回的是未定义的。我做错了什么?

您需要检查布尔值,如
true
,因为您使用
includes
,它返回
true
false

顺便说一句,通过在每个
案例中使用
return
,您可以省略
break
,因为函数以
return
退出,该函数也会退出

函数getLetter(s){ 设字母=s[0]; //在这里编写代码 设A=['A','e','i','o','u']; 设B=['B','c','d','f','g']; 设C=['h','j','k','l','m']; 设D=['n','p','q','r','s','t','v','w','x','y','z'];
switch(true){/您可以使用
find
而不是
includes
,当您将字符传递给
switch()
时,它会尝试根据大小写匹配该字符,因为
includes
返回
true/false
,因此它不会匹配任何大小写

函数getLetter(s){ 设字母=s[0]; 设A=['A','e','i','o','u']; 设B=['B','c','d','f','g']; 设C=['h','j','k','l','m']; 设D=['n','p','q','r','s','t','v','w','x','y','z']; 开关(字母){ 案例A.find(v=>v==字母): 返回“A”; 案例B.find(v=>v==字母): 返回“B”; 案例C.find(v=>v==字母): 返回“C”; 案例D.find(v=>v==字母): 返回“D”; } } s=‘亚当’; t=一个或多个字母;
console.log(t);
基本上,您要检查
字母(字符串)是否等于
a.includes(s.charAt(0))
(布尔值),这是绝对不可能的。你应该在这里使用
if
else if
,而不是
switch
switch
语句更好,如果你想将一个值与多个值匹配:谢谢。当我使用if语句时,它工作得很好:``if(A.includes(s.charAt(0)){return'A';};“``如果我想要一个false的条件,我是否需要为false条件编写另一个switch语句,或者只是在switch外部和函数内部返回一个默认参数?在case子句中,可以使用。
function getLetter(s) {
    let letter = s[0];
    // Write your code here
    let A = ['a','e','i','o','u'];
    let B = ['b','c','d','f','g'];
    let C = ['h','j','k','l','m'];
    let D = ['n','p','q','r','s','t','v','w','x','y','z'];

  switch(letter) {
    case A.includes(s.charAt(0)): 
      return 'A';
    break;

    case B.includes(s.charAt(0)): 
      return 'B';
    break;

    case C.includes(s.charAt(0)): 
      return 'C';
    break;

    case D.includes(s.charAt(0)): 
        return 'D';
    break;
  }
}

s = 'adam';
t = getLetter(s);
console.log(t);