【发布时间】:2021-09-12 11:00:07
【问题描述】:
编写一个函数,该函数将一个连续(递增)字母数组作为输入,并返回数组中缺失的字母。 它总是会丢失一个字母。该数组将始终仅在一种情况下包含字母。 示例:
["a","b","c","d","f"] -> "e" ["O","Q","R","S"] -> "P"
为什么我的函数不起作用?
function findMissingLetter(array)
{
let alphabetArr = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
let alphabetSlice = alphabetArr.slice(alphabetArr.indexOf(array[0]), alphabetArr.indexOf(array[array.length - 1]) + 1);
let missingLetter = alphabetSlice.forEach((e, i) => {
if (e !== array[i]) {
return e;
}
});
return missingLetter;
}
function findMissingLetter(array)
{
let alphabetArr = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
let alphabetSlice = alphabetArr.slice(alphabetArr.indexOf(array[0]), alphabetArr.indexOf(array[array.length - 1]) + 1);
let missingLetter = alphabetSlice.map((e, i) => {
if (e !== array[i]) {
return e;
}
})[0];
return missingLetter;
}
【问题讨论】:
-
不工作怎么办?你期待什么结果?你会得到什么?你做了什么调试?
-
forEach和map都不是在数组中查找单个项目的正确方法。要么使用for/for-of循环,你可以跳出(可能是for,因为你想要索引),或者find(找到项目本身),或者findIndex(找到它的索引) .你的基本方法很好。查看find并阅读回调应该返回的内容,你会很好的。 :-) -
findMissingLetter(["a","b","c","d","f"])我没有定义。 -
但是 for/for-of 循环不是和 forEach 方法完全一样吗?
-
"...you can break out of..." 这句话的一部分很重要。 :-) 你不能跳出
forEach(除非抛出错误)。
标签: javascript arrays alphabetical