Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找字符串Javascript中缺少的字母_Javascript - Fatal编程技术网

查找字符串Javascript中缺少的字母

查找字符串Javascript中缺少的字母,javascript,Javascript,因此,输入是按字母顺序排列的一串字母。在那里的某个地方,一封信不见了。我必须归还丢失的信。我已经在下面发布了我的代码。评论很好,这些评论比我在这里解释得更好。我将在下面解释我的问题 function fearNotLetter(str) { var charCodes; var test; var offendingNumber; var numToString; // i starts at 1, increments to str.length for (var i

因此,输入是按字母顺序排列的一串字母。在那里的某个地方,一封信不见了。我必须归还丢失的信。我已经在下面发布了我的代码。评论很好,这些评论比我在这里解释得更好。我将在下面解释我的问题

function fearNotLetter(str) {
  var charCodes;
  var test;
  var offendingNumber;
  var numToString;

  // i starts at 1, increments to str.length
  for (var i = 1; i < str.length; i++) {
    // Char code of last letter minus char code of second last letter,
    // Char code of second last letter minus char code of third last letter, etc.
    // Repeat on a loop and set result equal to test each time.
    test = str.charCodeAt(str.length - [i]) - str.charCodeAt(str.length - [i + 1]);
    console.log(test);

    // If charCode A - charCode B == 1, then letters are in order
    // alphabetically and test returns 1. 

    // If charCode A - charCode B > 1, then letters missing from string.

    // So if difference between char codes is more than 1,
    // return missing char code and convert to string.
    if (test > 1) {
      offendingNumber = str.charCodeAt(str.length - [i]);
      numToString = String.fromCharCode(offendingNumber);
      console.log(numToString);
    } // End of if.
    // If no letters missing from input, return undefined.
    else {
      return undefined;
    } // End of else.
  } // End of loop.
} // End of function.

// Here is the input str
fearNotLetter("abce");
问题出在这里。如果我输入abce,我就缺少d。logtest返回2,我可以得到丢失的字母。太好了

如果我输入abcef和前面一样的字符串,最后加上f,我仍然缺少d。测试返回1,好像表示没有丢失字母,但仍然缺少d

我的程序只有在缺少的字符可以放在字符串的最后一个空格中时才能工作。lmnp有效,但lmnpqrs无效


我的循环显然在遍历字符串中的每个字符,因为它可以从长字符串abcdefghijklmnopqrstuvxyz中找出缺少的w。当缺少的字符后面有多个字符时,为什么循环会中断?它的行为就像我在循环之外调用了console.logtest,并且只返回最后一次迭代。我试着将测试推到一个数组中,但是这没有任何帮助。

如果测试值不大于1,则循环中断,因为您正在从函数返回。

如果测试值不大于1,则循环中断,因为您正在从函数返回。

有几个问题:您的索引被混淆,即被1关闭;未定义的返回应该在循环之外,而不是在循环中;在不应该使用str.length的地方使用str.length;您将迭代变量放在括号中,而您不应该:

function fearNotLetter(str) {
    var difference;
    var missingCharCode;

    // i starts at 1, increments to str.length
    for (var i = 1; i < str.length; i++) {

        // Char code of last letter minus char code of second last letter,
        // Char code of second last letter minus char code of third last letter, etc.
        // Repeat on a loop and set result equal to test each time.
        difference = str.charCodeAt(i) - str.charCodeAt(i - 1);

        // If charCode A - charCode B == 1, then letters are in order
        // alphabetically and test returns 1. 

        // If charCode A - charCode B > 1, then letters missing from string.

        // So if difference between char codes is more than 1,
        // return missing char code and convert to string.
        if (difference > 1) {
            missingCharCode = str.charCodeAt(i) - 1;
            return String.fromCharCode(missingCharCode);
        } // End of if.
    } // End of loop.

    return undefined;
} // End of function.

有几个问题:你的索引是混乱的,即关闭了一个;未定义的返回应该在循环之外,而不是在循环中;在不应该使用str.length的地方使用str.length;您将迭代变量放在括号中,而您不应该:

function fearNotLetter(str) {
    var difference;
    var missingCharCode;

    // i starts at 1, increments to str.length
    for (var i = 1; i < str.length; i++) {

        // Char code of last letter minus char code of second last letter,
        // Char code of second last letter minus char code of third last letter, etc.
        // Repeat on a loop and set result equal to test each time.
        difference = str.charCodeAt(i) - str.charCodeAt(i - 1);

        // If charCode A - charCode B == 1, then letters are in order
        // alphabetically and test returns 1. 

        // If charCode A - charCode B > 1, then letters missing from string.

        // So if difference between char codes is more than 1,
        // return missing char code and convert to string.
        if (difference > 1) {
            missingCharCode = str.charCodeAt(i) - 1;
            return String.fromCharCode(missingCharCode);
        } // End of if.
    } // End of loop.

    return undefined;
} // End of function.
以下是我的看法:

function fearNotLetter( str ) {
  var ch0 = str.charCodeAt(0), ch;
  str.split("").every(function(v, i){
    ch = String.fromCharCode(ch0 + i);
    return ch === v;
  });
  return ch === str[str.length-1] ? undefined : ch;
}


console.log( fearNotLetter("cdefgij") ); // "h"
以下是我的看法:

function fearNotLetter( str ) {
  var ch0 = str.charCodeAt(0), ch;
  str.split("").every(function(v, i){
    ch = String.fromCharCode(ch0 + i);
    return ch === v;
  });
  return ch === str[str.length-1] ? undefined : ch;
}


console.log( fearNotLetter("cdefgij") ); // "h"
请注意,在这两种情况下,函数都返回一个值


请注意,在这两种情况下,函数都返回一个值

您可以使用这个简单的解决方案

function fearNotLetter(str){
    let num = 97;
    for(let s of str){
        if(s.charCodeAt(0) !== num) return String.fromCharCode(num);
        num++;
    }
    return String.fromCharCode(num)  
}

您可以使用这个简单的解决方案

function fearNotLetter(str){
    let num = 97;
    for(let s of str){
        if(s.charCodeAt(0) !== num) return String.fromCharCode(num);
        num++;
    }
    return String.fromCharCode(num)  
}
大家好

我还在用奶瓶喝JS。我想出了一个noob解决方案:

希望你喜欢

大宗报价

大家好

我还在用奶瓶喝JS。我想出了一个noob解决方案:

希望你喜欢

大宗报价

按如下方式操作:

let value=ghijklmnoqstuw//缺少p、r、v //查找第一个缺少的字符 函数findOddtest{ 设abc=abcdefghijklmnopqrstuvxyz 设sp=abc.indexOftest[0] forlet i=0;i按如下方式操作:

let value=ghijklmnoqstuw//缺少p、r、v //查找第一个缺少的字符 函数findOddtest{ 设abc=abcdefghijklmnopqrstuvxyz 设sp=abc.indexOftest[0]

forlet i=0;我请正确缩进代码以使其可读。Amanuel Bogal编辑了它。希望这样对您更好read@maracaabcde str.length=5,但str.charCodeAt从[0]到[4]这段代码很可怕,但除此之外,if语句中缺少了一个东西,即返回beexact@Nhor谢谢。我知道返回不在if语句中。我将添加它只是为了清楚这不是问题。请正确缩进代码以使其可读。Amanuel Bogal编辑了它。希望这样对您更好read@maracaabcde str.l长度=5,但str.charCodeAt从[0]到[4]这段代码很可怕,但除此之外,if语句中缺少了一个东西,即返回beexact@Nhor谢谢。我知道返回不在if语句中。我将添加它只是为了明确这不是我让它变得不必要的复杂的问题。这个解决方案有效。谢谢。如果函数的行为n是在函数上方的一个块中解释的。在这种形式中,有太多的内联注释,几乎无法阅读。注释像//i从1开始,增量到str.length是如此明显,以至于只是重复。我使它变得不必要的复杂。此解决方案有效。谢谢。如果函数的行为是e,代码会更清晰在函数上方的一个块中解释。在这种形式中,有太多的内联注释,几乎无法阅读。注释像//i从1开始,递增到str.length是如此明显,以至于只是repeat.Ooof。这是一个crockpunchmoof。这是一个crockpunchmadd内容,带有解释,而不仅仅是代码转储。它防止向下投票者被触发gered。完成巡更!结束审核。添加内容并进行解释,而不仅仅是代码转储。它可以防止触发否决投票。完成巡更!结束审核。