无法使用具有多个条件语句的过滤器从数组中删除元音

Cant remove vowels from an array using filter that has multiple conditional statements

wordArr = ['a', 'g', 'e', 'f'];
wordArr = wordArr.filter(function(l){
            return l !== 'a' || l!== 'e'|| l!== 'i'|| l!== 'o' || l!== 'u'; 
       });

我的结果:我的wordArr没变

期望输出:['g', f'];

如果我只检查一个元音,它只适用于一种情况。我如何使这项工作适用于多种情况?

先谢谢你。

您的条件不正确。仅考虑以下内容:

return l !== 'a' || l!== 'e'

如果字符串(在 l 内)是 foo,结果是 true,因为它不是 'a'

如果字符串是 'a',结果是 true 因为它不是 'e':

return l !== 'a' || l!== 'e'
return false || true
return true

如果字符串是 'e',结果是 true 因为它不是 'a':

return l !== 'a' || l!== 'e'
return true || false
return true

您需要 && 秒。

return l !== 'a' && l!== 'e'&& l!== 'i'&& l!== 'o' && l!== 'u'; 

或者,甚至更好:

const wordArr = ['a', 'g', 'e', 'f'];
console.log(wordArr.filter(str => !/[aeiou]/.test(str)));

您在此处使用 ||,它将检查导致问题的任一情况。只需使用 && 而不是 ||

wordArr = ["a", "g", "e", "f"];
const result = wordArr.filter(function(l) {
  return l !== "a" && l !== "e" && l !== "i" && l !== "o" && l !== "u";
});

console.log(result);

或者,您可以使用 includes 检查是否存在。

const wordArr = ["a", "g", "e", "f"];
const vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"];

const result = wordArr.filter((l) => !vowels.includes(l));

console.log(result);