【发布时间】:2022-01-01 02:56:01
【问题描述】:
我正在编写一个从 str 参数中删除元音的程序,我决定使用 switch 语句来实现这个目标。 我很不擅长解释东西,所以我给你举个例子:
无意冒犯,\n你的作品是我读过的最糟糕的作品之一
应该变成
N ffns bt,\nYr wrtng s mng th wrst 'v vr rd
但我的输出是这样的:
N ffns bt,\nYur wrtng s mng th wrst 'v vr rad
程序出于某种原因决定离开“u”和“a”。在寻找原因将近 1.5 小时后,我放弃了,因为我根本不知道自己做错了什么。
function disemvowel(str) {
let arr = str.split(''); // str -> arr
for (let x = 0; x <= arr.length; x++) { // remove vowels
switch(arr[x]) {
case "a":
case "e":
case "i":
case "o":
case "u":
case "A":
case "E":
case "I":
case "O":
case "U":
arr.splice(x, 1);
break;
}
}
str = arr.join([separator = '']) // arr -> str
return str;
}
【问题讨论】:
-
尝试向后运行循环,这是遍历变异结果时的典型错误。
-
附带说明,JavaScript 没有命名参数。
[separator = '']将评估为''(由于参数被转换为字符串)。直接使用arr.join('')即可。
标签: javascript arrays switch-statement