I am trying to solve the following issue:
Find the missing letter in the passed letter range and return it. If all letters are present in the range, return undefine
I think this is the simplest code to do this:
function skippedLetter(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);
        }
    }
}
alert(skippedLetter('abce'));This version will reject illegal input, accept both upper and lower case, check that there is only 1 hole in the range, and that there is exactly 1 character missing.
function skippedLetter(str) {
    if (!str.match(/^[a-zA-Z]+$/)) return;
    var letter = "", offset = str.charCodeAt(0);
    for (var i = 1; i < str.length; i++) {
        var diff = str.charCodeAt(i) - i - offset;
        if (diff == 1) letter += String.fromCharCode(i + offset++)
        else if (diff) return;
    }
    if (letter.length == 1) return letter;
}
alert(skippedLetter('123567'));		// illegal characters
alert(skippedLetter(''));		// empty string
alert(skippedLetter('a'));		// too short
alert(skippedLetter('bc'));		// nothing missing
alert(skippedLetter('df'));		// skipped letter = e
alert(skippedLetter('GHIKLM'));		// skipped letter = J
alert(skippedLetter('nOpRsT'));		// cases mixed
alert(skippedLetter('nopxyz'));		// too many characters missing
alert(skippedLetter('abcefgijk'));	// character missing more than once
alert(skippedLetter('abcefgfe'));	// out of orderfunction fearNotLetter(str) {
  var a = str.split('');
  var array = [];
  var j = 0;
  for (var i = 1; i < a.length; i++) {
    var d = a[i].charCodeAt(0);
    var c = a[i - 1].charCodeAt(0);
    var delta = d - c;
    if (delta != 1) {
      array[i] = String.fromCharCode(a[i - 1].charCodeAt(0) + 1);
    }
  }
  str = array.join('');
  if (str.length === 0) {
    return undefined;
  } else {
    return str;
  }
}
fearNotLetter('abcefr');Here is what I use:
function fearNotLetter(str) {
        var firstLtrUnicode = str.charCodeAt(0),
            lastLtrUnicode = str.charCodeAt(str.length - 1);
        var holder = [];
        for (var i=firstLtrUnicode; i<=lastLtrUnicode; i++) {
            holder.push(String.fromCharCode(i));
        }
        var finalStr = holder.join('');
        if ( finalStr === str ) { return undefined; }
        else { return holder.filter( function(letter) {
            return str.split('').indexOf(letter) === -1;
        }).join(''); } }
function fearNotLetter(str) {  
  var string = array. join("");
  for (var i = 0; i < string. length; i++) {                    
    if (string. charCodeAt(i + 1) - string. charCodeAt(i) != 1) {
      return String. fromCharCode(string. charCodeAt(i) + 1);
    } 
  }
  return undefined 
}
How about this one? it finds all missing letters anywhere between the first and the last given letters:
function fearNotLetter(str) {
  var strArr = str.split('');
  var missingChars = [], i = 0;
  var nextChar = String.fromCharCode(strArr[i].charCodeAt(0)+1);
  while (i<strArr.length - 1) {
    if (nextChar !== strArr[i+1]){
      missingChars.push(nextChar);
      nextChar = String.fromCharCode(nextChar.charCodeAt(0)+1);
    } else {
      i++;
      nextChar = String.fromCharCode(strArr[i].charCodeAt(0)+1);
    }
  }
  return missingChars.join('') === '' ? undefined : missingChars.join('') ;
}
console.log(fearNotLetter("ab"));
I would do it like this:
function fearNotLetter(str) {
    var i, j = 0, m = 122;
    if (str) {
        i = str.charCodeAt(0);
        while (i <= m && j < str.length) {
            if (String.fromCharCode(i) !== str.charAt(j)) {
                return String.fromCharCode(i);
            }
            i++; j++;
        }
    }
    return undefined;
}
console.log(fearNotLetter('abce'));        // "d"
console.log(fearNotLetter('bcd'));         // undefined
console.log(fearNotLetter('bcdefh'));      // "g"
console.log(fearNotLetter(''));            // undefined
console.log(fearNotLetter('abcde'));       // undefined
console.log(fearNotLetter('abcdefghjkl')); // "i"i can go from 97 to 122, this interval corresponds to the ASCII codes of the lower case alphabet.
If you want it not to be case sensitive, just do str = str.toLowerCase() at the beginning of the function.