我有以下JS函数,可从字符串中删除元音并将其输出到控制台。
对于输入字符串“ quickbrownfox”,该函数将跳过连续的u和i元音,否则有人会指出逻辑错误。
function vowels(s) {
var arr = [...s];
for (var i = 0; i < arr.length; i++) {
var x = arr[i];
switch (x) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
var out = arr.splice(i, 1);
console.log(out[0]);
}
}
}
vowels("quickbrownfox")
答案 0 :(得分:1)
只需两个字符即可修复此功能 更改此:
var out = arr.splice(i, 1);
对此:
var out = arr.splice(i--, 1);
答案 1 :(得分:0)
不拼接数组,只需直接记录该值。
function vowels(s) {
var arr = [...s];
for (var i = 0; i < arr.length; i++) {
var x = arr[i];
switch (x) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
// var out = arr.splice(i, 1);
console.log(arr[i]);
}
}
}
vowels("quickbrownfox")
答案 2 :(得分:0)
您的接头正在使弄乱循环的数组变异
相反,只需对其进行过滤
const vowels = "aeiou"
const getVowels = s => [...s].filter(letter => vowels.includes(letter))
console.log(
getVowels("quickbrownfox")
)
答案 3 :(得分:0)
无需使用var out = arr.splice(i, 1);
function vowels(s) {
var arr=[...s];
for(var i=0; i<arr.length;i++)
{
var x=arr[i];
switch(x)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
console.log(x);
}
}
}
console.log(vowels('quickbrownfox'))
答案 4 :(得分:0)
迭代s
而不是arr
,并分配var x = s[i]
而不是var x = arr[i]