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

JavaScript是否有类似Python的if..not in..语法?元音移除函数问题

JavaScript替代Python not in语法的解决方案

Python中的not in在JavaScript中没有直接对应的原生关键字,你可以用以下两种常见方案实现同等判断效果:

  • 方案1(推荐,ES6+支持):使用Array.prototype.includes()方法搭配逻辑非运算符!,语义最直观
    对应判断逻辑写法:!vowels.includes(待检查字符.toLowerCase())
  • 方案2(兼容旧版本JS):使用Array.prototype.indexOf()方法,元素不存在时该方法返回值为-1
    对应判断逻辑写法:vowels.indexOf(待检查字符.toLowerCase()) === -1

补充说明:JavaScript中的in关键字仅用于判断对象是否包含某个属性名,不能直接用来判断数组是否包含某元素,这也是你原有写法无法生效的原因。

另外你原代码还有两处逻辑问题需要修正:

  1. 使用for...in遍历字符串时,迭代变量i拿到的是字符的索引下标,不是字符本身,需要通过string[i]才能获取到对应字符
  2. 原有判断逻辑写反:你需要保留非元音字符,因此当字符不在元音数组中时应该追加到结果字符串,而非执行continue

修正后的完整代码如下(使用推荐的includes方案):

function removeVowels(string) {
    var newstring = '';
    var vowels = ['a','e','i','o','u'];
    // 改用for...of直接遍历字符,避免处理索引
    for (var char of string) {
        var lowerChar = char.toLowerCase();
        // 字符不在元音数组中时追加到结果
        if (!vowels.includes(lowerChar)) {
            newstring += char;
        }
    }
    return newstring;
}

如果需要兼容不支持ES6的旧运行环境,将判断条件替换为if (vowels.indexOf(lowerChar) === -1)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:48:03