2017-11-30 10 views
-1

내가 착수하고 작업은 다음과 같습니다'duplicates'속성이 2 대신 3을 계속 반환하는 이유는 무엇입니까? 다음과 같이

기능은 removeDuplicates를 호출해야하고, 정렬 된 입력 문자열 있지만 중복 또는 특수 문자없이 있어야 할 '유니크'속성을 포함하는 객체 리터럴을 반환해야합니다. 반환 된 객체에는 삭제 된 총 중복 문자 수를 나타내는 'duplicates'속성도 있어야합니다. 그래서 : removeDuplicates ('일 #의 elex_ash?') 가 반환해야합니다 : {유니크 '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} 

} 

그러나 결과를 반환 {여기

내 코드입니다 유니크 : 'aehlstx', 중복 : 3}. 당신이 시간을 당신이 전에 문자를 본 적이 있다면 먼저 확인하려는되지 허용되는 문자 :

답변

0

를 계산 한 다음이 허용 된 문자였다 확인하고의 수를 계산하기 때문에

+0

방금 ​​if 문을 바꿔서 작동했습니다. 감사합니다 – danoseun

+0

답변을 수락하는 것을 잊지 마세요 ;-) –

0

당신은 비를 참조 허용 된 문자. 문자가 허용되는지 확인한 다음 이전에 본 적이 있는지 확인해야합니다.