Javascript 从字符串中删除字符会删除某些字母的倍数,但不会删除其他字母

Javascript 从字符串中删除字符会删除某些字母的倍数,但不会删除其他字母,javascript,Javascript,我有一个简单的函数,可以从字符串中删除指定的字母。但是,它将删除某些字母的副本,但不会删除其他字母的副本。这怎么可能 function removeLetter(str) { const arr = ['u', 'a', 'e', 'i', 'o', 'A', 'E', 'I', 'O', 'U']; let strArr = str.split(''); strArr.forEach(function(strVal) { arr.forEach(function(arrVa

我有一个简单的函数,可以从字符串中删除指定的字母。但是,它将删除某些字母的副本,但不会删除其他字母的副本。这怎么可能

function removeLetter(str) {
  const arr = ['u', 'a', 'e', 'i', 'o', 'A', 'E', 'I', 'O', 'U'];
  let strArr = str.split('');
  strArr.forEach(function(strVal) {
    arr.forEach(function(arrVal){
      if (strVal === arrVal) {
        const index = strArr.indexOf(strVal)
        strArr.splice(index, 1)
      }
    })
  })
  return strArr.join("")
}

工作操场链接

您正在对strArr进行更改,并且位置不同,因此只需先循环
arr
,然后循环
strArr

函数字符串检查(str){
常量arr=['u','a','e','i','o','a','e','i','o','u'];
设strArr=str.split(“”);
arr.forEach(函数(arrVal){
strArr.forEach(函数(strVal){
if(strVal==arrVal){
常数索引=strArr.indexOf(strVal)
横向拼接(索引1)
}
})
})
console.log(strArr.join(“”))
返回strArr.join(“”)
}
stringCheck(“西班牙的雨主要落在平原上”)
log('==上面一行获取所有a,但不获取i=='))
stringCheck(“你是什么,共产党的儿子”)

console.log('==上面一行获取所有的a和o,但两个u中的一个==')
您正在对strArr进行更改,并且位置不一样,所以只需先循环
arr
,然后循环
strArr

函数字符串检查(str){
常量arr=['u','a','e','i','o','a','e','i','o','u'];
设strArr=str.split(“”);
arr.forEach(函数(arrVal){
strArr.forEach(函数(strVal){
if(strVal==arrVal){
常数索引=strArr.indexOf(strVal)
横向拼接(索引1)
}
})
})
console.log(strArr.join(“”))
返回strArr.join(“”)
}
stringCheck(“西班牙的雨主要落在平原上”)
log('==上面一行获取所有a,但不获取i=='))
stringCheck(“你是什么,共产党的儿子”)

console.log('==上面一行获取所有的a和o,但两个u中的一个==')
替换所有出现的
aueio
的Regexp如何

函数字符串检查(str){
返回str.replace(/[aueio]/ig',)
}
log(stringCheck(“西班牙的雨主要落在平原上”))

log(stringCheck(“你是什么,共产党的儿子”)
替换所有出现的
aueio
的Regexp如何

函数字符串检查(str){
返回str.replace(/[aueio]/ig',)
}
log(stringCheck(“西班牙的雨主要落在平原上”))

console.log(stringCheck(“你是什么,共产党的儿子”)
str.split(“”).filter(x=>!arr.includes(x)).join(“”)永远不要改变数据结构(在本例中是拼接数组),因为在迭代数据结构时,会出现各种奇怪的行为。更简单的是,感谢这个函数效率低下,因为每个元素要循环3次。你真的应该考虑正则表达式。只要把所有元音都换成一个“”。示例:
函数stringCheck(str){return str.replace(/[aeiou]/gi,”);}
str.split(“”).filter(x=>!arr.includes(x)).join(“”)永远不要改变数据结构(在本例中是拼接数组),因为在迭代数据结构时,会出现各种奇怪的行为。更简单的是,感谢这个函数效率低下,因为每个元素要循环3次。你真的应该考虑正则表达式。只要把所有元音都换成一个“”。示例:
函数stringCheck(str){return str.replace(/[aeiou]/gi,”);}
完全没有注意到我正在变异数组,然后尝试查看它。完全没有注意到我正在变异数组,然后尝试查看它。这样也可以,看起来更简单,但我正在尝试修复我所拥有的。也可以,看起来更简单,但我一直在努力解决我的问题。