Javascript:我正在尝试循环遍历一个字符串,并确定是否缺少一个字符

Javascript:我正在尝试循环遍历一个字符串,并确定是否缺少一个字符,javascript,string,Javascript,String,这是我的挑战:创建一个函数,该函数将查找在参数中传递的丢失字母并返回它。如果字符串中存在所有字母,则返回值将是未定义的。例如,missingLetter(“abce”)应返回“d”,missingLetter(“bcd”)应返回未定义 我在这个问题上遇到了麻烦,请告诉我我的代码是否正确: var missingLetter = function(char){ var missing = ""; var str = "abcdefghijklmnopqrstuvwxyz"; for (

这是我的挑战:创建一个函数,该函数将查找在参数中传递的丢失字母并返回它。如果字符串中存在所有字母,则返回值将是未定义的。例如,missingLetter(“abce”)应返回“d”,missingLetter(“bcd”)应返回未定义

我在这个问题上遇到了麻烦,请告诉我我的代码是否正确:

var missingLetter = function(char){
  var missing = "";
  var str = "abcdefghijklmnopqrstuvwxyz";
  for (var i = char[0]; i < char.length; i++){
     for(var y = char[0].indexOf(str); y < char.length; y++ ){
       if(char[y].indexOf(str) == -1 ){
         missing.push(char[y]);
       }
     }
  }
   console.log(missing);
  return missing;
}
missingLetter("abce")
var missingLetter=函数(char){
var缺失=”;
var str=“abcdefghijklmnopqrstuvxyz”;
for(var i=char[0];i
您已将变量missing定义为字符串,但它应该是一个数组()。循环条件不正确。下面是代码片段,可以正常工作

var missingLetter = function(char){
    var missing = new Array();
    var str = "abcdefghijklmnopqrstuvwxyz";
    var i = 0;
    while(i<char.length) {
        for(var j=0;j<26;j++) {
            if(str[j].indexOf(char[i])>-1){
                i++;
            } else {
                missing.push(str[j]);
            }
        }
    }
    console.log(missing);
    return missing;
}
missingLetter("abce");
var missingLetter=函数(char){
var missing=新数组();
var str=“abcdefghijklmnopqrstuvxyz”;
var i=0;

而(iTonmoy)已经给出了答案,如果你想,你可以检查一下。首先,如果你想使用push函数,那么你必须创建一个数组

var missingLetter = function(char){
    var missing = []
    var y = 0
    var str = "abcdefghijklmnopqrstuvwxyz";
    for (var i = 0; i < str.length; i++){
        while(y  < char.length ){
            if( char[y] != str[y+i] ){
                missing.push(str[y+i])
                ++i
            }
            else
                ++y
        }
}
console.log(missing)
return missing
}
missingLetter("cdz")
var missingLetter=函数(char){
缺少var=[]
变量y=0
var str=“abcdefghijklmnopqrstuvxyz”;
对于(变量i=0;i
您将变量
i
设置为
字符串
,但将其与
数字
进行比较?@AmreshVenugopal您是指.indexOf()吗?在这里,我使用-1确定数组中是否不存在此字母。如果是,则我将缺少的字母推送到新变量。您不是要翻转
字符[y].indexOf(str)
i.e.
str.indexOf(char[y])
为什么有两个循环?我指的是for循环中的这一部分:
var i=char[0];i
@AmreshVenugopal很好,这没有意义。嘿,谢谢Tonmoy,这很有效,但不完全正确。在这里,您的代码将返回所有缺少的字母“d”+“f-z”但是,我只想返回“d”-输入字符串中唯一缺少的字母。然后您需要更改几行。将它替换为if(str[j].indexOf(char[I])>-1{I++;}或者将{missing.push(str[j]);}替换为if(str[j].indexOf(char[i])==-1{missing.push(str[j]);return missing;}酷!这对我来说很有意义,除了这一行:char[y]!=str[y+i],特别是str[y+i]在做什么?嗨,这是因为你每次都必须更改str元素,但每次都必须查找z元素嗯,str[y+i]=在任何时候会是什么?例如,str[y+j]=当char[y]=“c”?当char[y]=c时,这意味着y=0,i=2,char[y]和str[i+y]相等。如果i=5,y仍然是2 str[i+y]=h char[y]=z,仍然不相等,那么将1加在i上,i变成6,y=2 str[i+y]=i