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关键字仅用于判断对象是否包含某个属性名,不能直接用来判断数组是否包含某元素,这也是你原有写法无法生效的原因。
另外你原代码还有两处逻辑问题需要修正:
- 使用
for...in遍历字符串时,迭代变量i拿到的是字符的索引下标,不是字符本身,需要通过string[i]才能获取到对应字符 - 原有判断逻辑写反:你需要保留非元音字符,因此当字符不在元音数组中时应该追加到结果字符串,而非执行
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
相关产品推荐
相关产品推荐

