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

JS实现查找字母数组中缺失的字母:为何我的两个函数无法正常运行?

两个函数的问题分别如下

第一个函数问题

forEach方法没有返回值,永远返回undefined,你在forEach回调函数内的return只会终止当前这一轮回调的执行,并不会把值传递给外层的missingLetter变量,所以函数最终返回的永远是undefined,无法得到正确结果。

第二个函数问题

map方法会返回和原数组长度一致的新数组,你只有在元素不匹配时返回对应字母,其余位置都会返回undefined。同时由于正确的完整字母序列alphabetSlice比输入数组多了一个缺失字母,长度比输入数组大1,遍历到后面索引时输入数组对应位置已经是undefined,会产生多余的匹配结果,你直接取返回数组的第0项,拿到的一定是undefined,自然无法得到正确结果。


修正方案

你可以直接用find方法,拿到第一个和输入数组对应位置不匹配的元素即可,修改后代码如下:

function findMissingLetter(array)
{
  const alphabetArr = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
  const startIndex = alphabetArr.indexOf(array[0]);
  const endIndex = alphabetArr.indexOf(array[array.length - 1]);
  const alphabetSlice = alphabetArr.slice(startIndex, endIndex + 1);
  // find方法返回第一个满足条件的元素,刚好就是缺失的字母
  return alphabetSlice.find((letter, index) => letter !== array[index]);
}

测试用例验证:

  • 输入["a","b","c","d","f"],返回"e"
  • 输入["O","Q","R","S"],返回"P"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:42:02