2014-09-13 3 views
-1

에 대해 하나와 배열의 두 요소 나는 다음과 같은 코드가 있습니다경기 루프

var fl = myitems(); //grabs all items (an array) 
var f1 = f2 = new String(); 


function myfunc(){ 
    //find two items in an array and load vars 
    for(i=0; i<fl.length-1; i++){ 
     if(fl[i] == "match1"){ 
      f1 = fl[i]; 
     } 
    } 
    for(i=0; i<fl.length-1; i++){ 
     if(fl[i] == "match2"){ 
      f2 = fl[i]; 
     } 
    } 
} 

내가 (에 대한 여분을 피하기 위해 같은 것), 가능하면. 나는 else를 시도하지만, 두 번째 요소가 for 루프에서 이미 초과 된 후 첫 번째 일치 요소가 여러 번 발견됩니다.

나는 쉬운 방법이 있다고 확신합니다 (else ifelse).

누구나 공통된 실천이 무엇인지 말해 줄 수 있습니까?

+1

_assignment_ 인'='대신에'==='또는'=='비교 연산자를 사용해야합니다! – undefined

+1

일반적으로'''''new String'이 아닌''''을 사용하고''fl'과'f1'과 같은 혼동스러운 변수를 사용하지 말고'for' 루프에서'var' 변수를 선언하고 비교 연산자 'if' 문장에서의 과제가 아닙니다. 많은 일이 잘못되었습니다 .... – elclanrs

+0

localeCompare()를 사용하여 문자열을 비교할 수도 있습니다. 그리고 나는 2 개의 for 루프를 피하고 하나의 for 루프에 2 개의 조건을 추가하는 것보다 당신을 제안한다. – Avinash

답변

1

는 동일한 루프에서 모두 테스트를 수행 할 수 있습니다

for (i = 0; i < fl.length - 1; i++) { 
    if (fl[i] == "match1") { 
     f1 = fl[i]; 
    } else if (fl[i] == "match2") { 
     f2 = fl[i]; 
    } 
} 

참고 비교 연산자가 ==하지 =입니다.

+0

잘못된 구문에 사과드립니다. 내 코드를 수정했는데 f2의 일치 문자열이 'i'가 그 지점까지 증가하면 이미 지나쳤습니다. – jml

+0

두 루프가 반복적으로 일치하는지 확인합니다. – folkol

+1

값을 확인하는 경우 문자열을 비교하려면 equals ("match1") 및 equals ("match2")를 사용해야합니다. == 객체 식별을 검사합니다. –

1

나는이 원래의 질문에 대답하지 않는 것을 알고 있지만, 그것은 당신이, 당신이 할 수있는 배열이 'match1'와 'match2'를 포함하는지 여부를 확인하려는 것처럼 보이는 Array.prototype.indexOf과 :

var items = myitems(); 
if(items.indexOf('match1') !== -1) { 
    // Do whatever you need to do if the array contains 'match1' 
} 
+0

도움 주셔서 감사합니다. – jml

+0

프로그램과 함께 행운을 빕니다 :) – folkol

+1

검색 할 문자열이 'm'이라면이 문자열은'(n * m)'이됩니다. 내 대답과 같이 그것들을 하나의 루프로 결합하는 것은'O (n + m)'입니다. – Barmar