无法使用具有多个条件语句的过滤器从数组中删除元音
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);
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);