如何在javaScript中使用这个“缺失字母”功能?

时间:2016-04-24 02:10:50

标签: javascript

我正在'Missing letters'面临Free Code Camp.挑战,挑战表明以下内容:

  

在传递的字母范围内找到丢失的字母并将其返回。

     

如果范围内存在所有字母,则返回undefined。

   var previous = str.charCodeAt(j);
   var next = str.charCodeAt(j) + 1;

我以为我最初把它钉了,

next

简单地 - 如果next不正确,例如newstr = String.fromCharCode(next);的值不是后续字符,也不是之前的字符,返回$i

提前致谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

function fearNotLetter(str) {
  for(var i = 0; i < str.length - 1; i++)
  {
    if(str.charCodeAt(i) + 1 != str.charCodeAt(i+1))
        return String.fromCharCode(str.charCodeAt(i) + 1);
  }
  return undefined;
}

一般来说,设置和返回不必要的变量并不是一种好习惯。您也没有在if语句中测试任何条件。您需要实际比较第一个索引的字符值和第二个索引的字符值。此外,由于您需要比较2个索引,因此您的迭代必须在

的包含中停止
[0, length - 2] with a + 1 for the secondary index

[1, length - 1] with a - 1 for the secondary index

关于长度的说明 - 1:

考虑字符串中的字符&#34; abcd&#34;:

a, b, c, d
0, 1, 2, 3

如果我在尝试访问

时循环[0,3]
str[i+1] // index 4

当i = 3时,我将获得一个超出范围的索引异常 或者,如果i = 0,如果我尝试访问

,则索引超出范围异常
str[i-1] // index -1

这就是为什么我只迭代一个远离给定边界的原因

答案 1 :(得分:0)

我觉得这个解决方案很容易理解:

function fearNotLetter(str) {
  var missingLetter;
  for (var i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) - str.charCodeAt(i-1) > 1) {
      missingLetter = String.fromCharCode(str.charCodeAt(i) - 1);
    }
  }
  return missingLetter;
}