Javascript 为什么';副本';属性一直返回3而不是2?

Javascript 为什么';副本';属性一直返回3而不是2?,javascript,object-literal,Javascript,Object Literal,我的任务如下: 该函数应被称为RemovedUpplicates,并应返回包含“uniques”属性的对象文字,该属性应为已排序的输入字符串,但不包含任何重复项或特殊字符。 返回的对象还应具有“duplicates”属性,该属性应表示删除的重复字符总数。 因此: 移除的副本('th#elex_ash?')) 应返回: {uniques:'aehlstx',副本:2} 这是我的密码: function removeDuplicates(str) { var stg = str.split(

我的任务如下:

该函数应被称为RemovedUpplicates,并应返回包含“uniques”属性的对象文字,该属性应为已排序的输入字符串,但不包含任何重复项或特殊字符。 返回的对象还应具有“duplicates”属性,该属性应表示删除的重复字符总数。 因此: 移除的副本('th#elex_ash?')) 应返回: {uniques:'aehlstx',副本:2}

这是我的密码:

function removeDuplicates(str) {
    var stg = str.split("");
    var nstr = [];
    var allowed = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
    var count = 0;
    for(var i = 0; i<stg.length;i++){
        if(nstr.indexOf(stg[i])== -1){
            if(allowed.indexOf(stg[i]) > -1){
                nstr.push(str[i])
            }
            else{
                count +=1;
            }
        }
    }
    return{uniques: nstr.sort().join(""),duplicates: count}

}
函数移除副本(str){
var stg=str.split(“”);
var nstr=[];
允许的变量=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'、'q'、'r'、's'、't'、'u'、'v'、'w'、'x'、'y'、'z'];
var计数=0;
对于(变量i=0;i-1){
nstr.push(str[i])
}
否则{
计数+=1;
}
}
}
返回{uniques:nstr.sort().join(“”),重复项:count}
}

但是结果返回{uniques:'aehlstx',duplicates:3}。

因为您正在计算不允许的字符:)

首先检查您以前是否见过该字符,然后检查它是否是允许的字符,并计算您看到不允许的字符的次数。
你需要检查这个字符是否被允许,然后看看你以前是否见过它。

我刚刚交换了if语句,它成功了。谢谢