为什么跳过连续的元音?

时间:2019-12-04 15:37:41

标签: javascript arrays switch-statement

我有以下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")

5 个答案:

答案 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]