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