从字符串javascript算法中删除字符

从字符串javascript算法中删除字符,javascript,algorithm,Javascript,Algorithm,我正在练习算法问题,并试图在o(n)时间内从字符串中删除给定的字母 我下面的尝试在几个方面是错误的: outputString数组中的最后一个索引是“未定义”,我不知道为什么 我的输出是正确的字母,但返回的是原始字符串的长度 如何修复这些错误,以及为什么会发生这些错误 function removeChars(lettersToDelete, string) { var flags = {}; // a hash of letters to delete. var outpu

我正在练习算法问题,并试图在o(n)时间内从字符串中删除给定的字母

我下面的尝试在几个方面是错误的:

  • outputString数组中的最后一个索引是“未定义”,我不知道为什么
  • 我的输出是正确的字母,但返回的是原始字符串的长度
如何修复这些错误,以及为什么会发生这些错误

function removeChars(lettersToDelete, string) {
    var flags = {}; // a hash of letters to delete.
    var outputString = string.split("");
    var lettersToDelete = lettersToDelete.split("");
    var i, j;

    for (i = 0; i < lettersToDelete.length; i++) {
        flags[lettersToDelete[i]] = true;
    }
    console.log(flags);

    for (var j = 0; j < string.length; j++) {
        if (flags[string[j]]) {
            outputString[j++] = string[j];
        }
    }
    console.log(outputString); //[ 'a', 'a', 'a', 'a', undefined ]

    return outputString.join(""); // 'aaaa'
}
函数removeChars(字母删除,字符串){
var flags={};//要删除的字母哈希。
var outputString=string.split(“”);
var lettersToDelete=lettersToDelete.split(“”);
varⅠ,j;
对于(i=0;i
函数removeChars(字母删除,字符串){
var flags={};//要删除的字母哈希。
var outputString=[];//string.split(“”);
var lettersToDelete=lettersToDelete.split(“”);
varⅠ,j;
对于(i=0;iremoveChars(“itu”、“mitul”)如果需要,可以使用正则表达式<代码>var regex=new RegExp(“[”+lettersToDelete+“]”,'g');var outputString=string.replace(regex.)好听听有人试图学习1+你操纵
j
的方式在我看来不合适。另外,
outputString
变量被初始化为一个数组,其中包含原始输入中的所有字母,并且从不从该数组中删除任何内容。最后,循环中的if语句条件正在测试是否删除当前字母,但它不应该测试是否保留当前字母吗?它将返回“ml”,并且
输出字符串的长度将为2