You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化JavaScript中判断变量不等于多个值的代码逻辑?

简化元音过滤的实现方式

你想在循环里过滤掉小写元音,不想写一堆&&判断,这确实是个合理的需求——要是以后要排除20个值,堆逻辑运算符太麻烦。

先说说你那行错误代码的问题:("a" && "e" && "i" && "o" && "u") 这种逻辑与运算,会依次判断每个值,最后返回最后一个真值,也就是"u"。所以你的判断其实等价于str[i] !== "u",自然达不到过滤所有元音的效果。

下面给你几种更简洁的实现方式,还能轻松扩展排除列表:

方法1:用字符串的includes方法

把元音存成一个字符串,用includes判断当前字符是否是元音,取反即可:

function filterVowels(str) {
  let answer = "";
  const vowels = "aeiou"; // 要排除的字符都放这里,扩展直接加
  for (let i = 0; i < str.length; i++) {
    if (!vowels.includes(str[i])) {
      answer += str[i];
    }
  }
  return answer; // 注意:原代码里return在循环内部,会直接终止循环,要移到外面
}

方法2:用Set提升查找效率

如果要排除的字符很多(比如20个),Set的has方法查找速度比字符串includes更快:

function filterVowels(str) {
  let answer = "";
  const vowelSet = new Set(["a", "e", "i", "o", "u"]);
  for (let i = 0; i < str.length; i++) {
    if (!vowelSet.has(str[i])) {
      answer += str[i];
    }
  }
  return answer;
}

方法3:用正则表达式一行搞定

如果不需要手动写循环,正则替换可以更简洁,直接把所有元音替换为空字符串:

function filterVowels(str) {
  return str.replace(/[aeiou]/g, "");
}

另外注意你原代码的一个bug:return answer写在了for循环的大括号里,这会导致循环只执行一次就直接返回结果,必须把它移到循环外面才行。

内容的提问来源于stack exchange,提问作者user23333929

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:34:51