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

JavaScript使用filter方法提取数组元音仅返回部分匹配结果如何解决

故障根因

你代码的问题出在String.prototype.includes()方法的使用逻辑错误:

  • 该方法仅支持两个入参:第一个参数是要查找的单个目标字符串,第二个参数是可选的搜索起始位置下标
  • 你传入letter.includes("a", "e", "i", "o", "u")时,只有第一个参数"a"会被当作匹配目标,后续的"e"、"i"等参数会被直接忽略,所以只有字母a能被匹配,javascript里的第三个元音i无法被识别,最终结果就少了一个元素。
修复代码

调整判断逻辑,把元音字母存入数组后调用数组的includes方法判断当前字母是否属于元音即可:

function vowelsAndConsonants(s) {
  const letters = s.toString().split("");
  console.log(letters);
  // 定义元音数组,判断当前字母是否在数组内
  const vowelList = ['a', 'e', 'i', 'o', 'u']
  let vowels = letters.filter((letter) => {
    return vowelList.includes(letter);
  });

  console.log(vowels); // 输出 ['a','a','i'] 符合预期
}

vowelsAndConsonants("javascript");

也可以用正则匹配实现更简洁的写法:

let vowels = letters.filter(letter => /[aeiou]/.test(letter))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:24:01