为什么'重复'属性会继续返回3而不是2?

时间:2017-11-30 13:29:49

标签: javascript object-literal

我正在进行的任务如下:

该函数应该被称为removeDuplicates,并且应该返回一个包含'uniques'属性的对象文字,该属性应该是排序的输入字符串,但没有任何重复或特殊字符。 返回的对象还应该有一个'duplicates'属性,该属性应该表示丢弃的重复字符总数。 所以: removeDuplicates( '#第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}

}

但结果会返回{uniques:'aehlstx',重复:3}。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果你之前看过这个角色,你首先要检查,然后检查它是一个允许的角色并计算你看到一个不允许的角色的次数。 你需要检查是否允许角色,然后看看你以前是否看过它。