2012-12-17 1 views
0

특정 문자의 모든 색인을 문자열의 배열에 추가하려고합니다.문자열의 모든 문자 색인을 배열에 추가하십시오.

다음 코드가 있지만 작동하지 않기 때문에 약 10 번 브라우저를 다시 시작해야했습니다.

var xPositions = new Array(); 
var startPos = 0; 
var string = "abcdexabcdexabcdexabcdexabcdexabcdexabcdex"; 

while (true) { 

    var currentIndex = string.indexOf("x", startPos); 

    if (currentIndex == -1) { 
     break; 
    } 

    xPositions.push(currentIndex); 
    startPos = currentIndex; 

} 

나는 캐릭터가 더 이상 나타나지 않을 때까지 영원히 반복적으로 생각했다.

도움/의견 감사합니다.

+0

'startPos = currentIndex + 1;' – Musa

답변

1

난 당신이 반복해서 같은 현재의 인덱스를 받고 있다고 생각

var currentIndex = string.indexOf("x", startPos+1); 

을보십시오. "indexOf"는 지정한 색인에서 검색을 시작하므로 마지막으로 찾은 항목에 상대적으로 증가시켜야합니다.

나중에 참조 할 수 있도록 브레이크 포인트가있는 디버거를 사용하는 것이 좋습니다. 이러한 문제는 상대적으로 쉽게 발견 할 수 있습니다 (일부 console.log의 관련 데이터만으로도 이러한 유형의 버그가 발생하지 않을 수 있습니다. 전에 사용 해보지 않은 기능이 어떻게 작동 하는지를 항상 완벽하게 이해하기는 어렵습니다. 동작이 기대치와 일치하는지 여부는 부끄러움이 없습니다.