2011-11-22 8 views
1

객체 배열이 있고 각 객체의 속성 중 하나가 TheID입니다. 이 같은 뭔가 :javasccript 객체 배열의 요소를 찾으십시오.

TheArray[0].TheID = 34; 
TheArray[1].TheID = 2352; 
... 

내가 찾는 속성 TheID을 포함하는 배열의 인덱스를 반환 찾고 있어요. 이것은 작동하지만

for (i = 0; i < TheArray.length; i++) { 
    if (TheArray[i].TheID = MagicNumber) { var TheIndex = i; } 
} 
retun TheIndex; 

는 여전히 TheIndex을 발견 한 후에도 전체 배열을 루프에 있습니다

나는에 대한 루프 고전이있다.

TheIndex를 찾은 후 어떻게 루프를 멈추시겠습니까?

감사합니다.

+0

함수에 넣은 다음 변수를 반환하십시오. 그것은 루프에서 빠져 나올거야. 또는 휴식을 사용하십시오. – kevingreen

답변

3

당신은 루프를 떠나 break을 사용할 수

var TheIndex; 
for (var i = 0; i < TheArray.length; i++) { 
    if (TheArray[i].TheID == MagicNumber) { 
     TheIndex = i; 
     break; 
    } 
} 
return TheIndex; 
+0

괜찮 았어, 고마워. 나는 그걸 생각하지 않았다. – frenchie

0
if (TheArray[i].TheID = MagicNumber) { return i; } 
0

Break; 또는 return;를 루프 내에서 중지 당신은 당신이 찾고있는 것을 발견하면. 특정 속성 값에 대해 배열/객체를 검색하는 다른 방법은 없습니다. 이처럼 불필요한 성능 손실을 피하기 위해 코드를 완전히 고려해 볼 수도 있지만 항상 실현 가능한 것은 아닙니다.

0

오래 전부터이지만 검색을 많이 수행하는 경우 유용 할 수있는 또 다른 방법은 검색 조건에 따라 색인을 한 번 루프하는 것입니다.

var idToIdx={}; 
for (var i = 0; i < TheArray.length; i++) { 
    idToIdx['I'+TheArray[i].TheID] = i 
    } 
} 

을 당신이 필요로하는 다음 단지 idToIdx['I'+ MagicNumber] 여러 번 사용 : 한 번 이렇게.

관련 문제