2014-04-05 3 views
0

텍스트를 검색하여 배열 이름과 console.logs로 푸는 코드 아카데미 자습서를 만들고 있습니다. 문제가 발생했습니다. 글자의 위치가 실제 글자 대신 콘솔에 기록됩니다.배열을 통해 루프를 반복하여 내 이름을 찾고 인쇄하십시오.

/*jshint multistr:true */ 

var text = "blah bleh blih bloh blah blah mike bleh tak tik mike"; 
var myName = "mike"; 
var hits = []; 

for (i = 0; i < text.length; i++){ 
    if (text[i] ==="m"){ 
    for (j = i; j <= i + myName.length; j++){ 
    hits.push(j); 

    } 
} 

}

if (hits.length === 0){ 
console.log("Your name wasn't found!"); 

} else { 

console.log(hits); 
} 

이전 코드 표시 [30, 31, 32, 33, 34, 48, 49, 50, 51, 52]의 위치이다 : 여기 내 코드는 글자 자체가 아닌 내 텍스트 변수의 글자

+4

루프 안에 'hits.push (j);'가 호출됩니다. 그게 뭐라고 생각하니? –

+0

'hits.push (text [j]); ' – Scott

+0

'text [i] == "mike"'이어야하고 두 번째 루프를 제거하고'text [i]'를 누르십시오. 그렇지 않으면'text = "아침 bla bla mike bla bla"는'm'과'morning'을 일치시킵니다 – ajax333221

답변

2

글자의 위치가 으로 푸시되기 전에 변수 j에 있다는 것을 알고 있습니다.

해당 위치는 변수 text과 관련이 있습니다.

text의 특정 위치에있는 서신을 이미 text[i]으로 보았습니다.

그럼 j 대신 j의 특정 편지를 참조하면 text에 어떤 결과를 얻을 수 있습니까?

는 - 그것은 이런 종류의에 대한 정규 표현식을 사용하는 똑똑

+0

hits.push (text [j]); 이해 해줘서 고마워. – user3376521

1

(그냥 아래 코멘트에 대답하려면 나는 코드 아카데미 질문을 결코 확실 해요). 문자열에서 부분 문자열의 인스턴스를 찾으려면 :

var str = 'Greetings, SomeKittens, how are you, SomeKittens?'; 
var nameCount = str.match(/SomeKittens/g).length; 
관련 문제