Javascript 查找字符串中所有缺少的字母(字符串按字母顺序排列)

Javascript 查找字符串中所有缺少的字母(字符串按字母顺序排列),javascript,string,algorithm,Javascript,String,Algorithm,我正在尝试创建一个函数,用于查找字符串中所有缺失的字符,并返回所有缺失的字母。字符串将按字母顺序排列 例如,findMissing'abcde'应该返回'fghijklmnopqrstuvwxyz' 这是我的密码,它只返回第一个丢失的字母: function findMissing(str) { for (var i = 0; i < str.length; i++) { var code = str.charCodeAt(i);

我正在尝试创建一个函数,用于查找字符串中所有缺失的字符,并返回所有缺失的字母。字符串将按字母顺序排列

例如,findMissing'abcde'应该返回'fghijklmnopqrstuvwxyz'

这是我的密码,它只返回第一个丢失的字母:

function findMissing(str) {
  for (var i = 0; i < str.length; i++) {
   
    var code = str.charCodeAt(i);
               
    if (code !== str.charCodeAt(0) + i) {
     
      return String.fromCharCode(code - 1);
    }
  }
  return undefined;
}
    
findMissing("abce");
   //returns 'd'
在for循环中使用return会导致循环中断。 使用数组填充,然后返回数组

function findMissing(str) {
    var array = [];
    for (var i = 0; i < str.length; i++) {

        var code = str.charCodeAt(i);
           
        if (code !== str.charCodeAt(0) + i) {
 
            array.push(String.fromCharCode(code - 1));
        }
    }
    return array;
}


myArray = findMissing("abce");
在for循环中使用return会导致循环中断。 使用数组填充,然后返回数组

function findMissing(str) {
    var array = [];
    for (var i = 0; i < str.length; i++) {

        var code = str.charCodeAt(i);
           
        if (code !== str.charCodeAt(0) + i) {
 
            array.push(String.fromCharCode(code - 1));
        }
    }
    return array;
}


myArray = findMissing("abce");

可能的替代解决方案,作为奖励

常数a='abcdefghijklmnopqrstuvwxyz'; 常数r=s=>a.replace/\w/g,m=>s.includesm?:M
控制台。logr'abcd' 可能的替代解决方案,作为奖励

常数a='abcdefghijklmnopqrstuvwxyz'; 常数r=s=>a.replace/\w/g,m=>s.includesm?:M
控制台。logr'abcd' 我认为这要简单得多

const findMissing = (str) => {
  let missing = '';
  for (let s of 'abcdefghijklmnopqrstuvwxyz') {
    if (str.indexOf(s) === -1) missing += s;
  }
  return missing;
}

我认为这要简单得多

const findMissing = (str) => {
  let missing = '';
  for (let s of 'abcdefghijklmnopqrstuvwxyz') {
    if (str.indexOf(s) === -1) missing += s;
  }
  return missing;
}
试试这个:

函数findmisingstr{ 让allLetters=abcdefghijklmnopqrstuvxyz.split; 让inputLetters=str.split; 对于let i=0;i 函数findmisingstr{ 让allLetters=abcdefghijklmnopqrstuvxyz.split; 让inputLetters=str.split; 对于let i=0;i遵循您最初的代码方法,并进行一些小的更改:

function findMissing(str) {
  let alphabet="abcdefghijklmnopqrstuvwxyz";

  for (var i = 0; i < str.length; i++) {
   
    var char = str.charAt(i);

    if (alphabet.indexOf(char)!==-1) {
      alphabet=alphabet.replace(char,'');
    }
  }

  return alphabet;
}

console.log(findMissing("abce"));

遵循您最初的代码方法,并进行一些小的更改:

function findMissing(str) {
  let alphabet="abcdefghijklmnopqrstuvwxyz";

  for (var i = 0; i < str.length; i++) {
   
    var char = str.charAt(i);

    if (alphabet.indexOf(char)!==-1) {
      alphabet=alphabet.replace(char,'');
    }
  }

  return alphabet;
}

console.log(findMissing("abce"));

foor循环中的return语句导致循环退出建议使用缺少的列表,初始为空,并写入缺少的.pushString.fromCharCodecode-1;而不是返回String.FromCharCode-1;根据您的定义,为什么场景findMissing'abcde'返回包含e的efghijklmnopqrstuvwxyz?@esqew很抱歉我输入错误,现在它已修复。foor循环中的return语句会导致循环退出建议使用缺少的列表,最初为空,并写入缺少的。pushString.fromCharCodecode-1;而不是返回String.FromCharCode-1;根据您的定义,为什么使用'abcde'的场景返回包含e的efghijklmnopqrstuvwxyz?@esqew抱歉我输入错误,现在它已修复。它仍然只返回d?很遗憾,是的,仍然只返回d?很遗憾,是的