以下是我的“遗失字母”挑战代码。控制台日志显示'undefined'和缺少的字母d。我不明白发生了什么。谁能给我一些建议?谢谢!
var str ="bce";
for (var i=0;i< str.length;i++){
if(str.charCodeAt(i) - str.charCodeAt(i-1) !==1){
var missing = String.fromCharCode(str.charCodeAt(i-1)+1);
console.log(missing);
}
else
console.log(undefined);
}
答案 0 :(得分:0)
当i = 0
时,您的if语句可能会出现越界错误
str.charCodeAt(i-1)
str.charCodeAt(-1)
的索引不存在。
答案 1 :(得分:0)
您的代码在第一个循环中查找索引-1,将其更改为此。从1开始,而不是0
for (var i=1;i< str.length;i++){
if(str.charCodeAt(i) - str.charCodeAt(i-1) !==1){
var missing = String.fromCharCode(str.charCodeAt(i-1)+1);
console.log(missing);
}
else
console.log(undefined);
}
答案 2 :(得分:0)
在i = 1时开始你的循环;所以i-1至少为0.当你从0开始时,i-1变为-1。序列中的第一个字母是否可以丢失字母?如果你只需要找到一个缺失的数字,你可以记录它并打破循环。
var str ="bce";
for (var i=1;i< str.length;i++){
if(str.charCodeAt(i) - str.charCodeAt(i-1) !==1){
var missing = String.fromCharCode(str.charCodeAt(i-1)+1);
console.log(missing);
break;
}
}