2012-03-30 4 views
0

매우 쉽지만 해야할지 모르겠습니다. 내가개체의 속성 양을 가져 와서 for 루프에서 마지막 개체를 얻습니다.

var finalAmount = obj.length; 

지금 내가 루프

for (var i in obj) { 
    --- some other code in here 
갈 루프에 넣어 포함 얼마나 많은 특성을 알고 싶어 이제

var obj = eval(result); 

:

나는이 객체가

이제 루프가 obj의 최종 속성에 도달 할 때 뭔가해야 할 문제가 있습니다. 그래서 이것은 Ive가 시도한 것입니다 :

if (i+1 == finalamount){ 
    //do something 
} else { 
    //do something else 
} 

그래서 기본적으로 얼마나 많은 항목이 포함 된 VAR과 비교하는 포인터로 i을 사용하고이 경우 최종 루프가 다음 일을 하나 ...

+0

(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval#Don't_use_eval!), obj.length는 작동하지 않을 수도 있습니다. 당신은 eval이 문자열이나 배열과 같은 것을 반환했습니다. 마지막 항목으로 실제로 무엇을하고 싶습니까? –

답변

0

을 찾을 때 i은 반드시 숫자 일 필요는 없으므로 i+1은 원하는 결과를 제공하지 않을 수 있습니다. 각 루프 반복의 끝에서 증가하는 별도의 카운터 변수를 설정해야합니다.

+0

그 덕분에, 나는 별도의 카운터를 사용하고 지금은 완벽하게 작동합니다! –

0
  1. 귀하의 경우에는 obj가 Array 여야합니다. 그렇지 않으면 i + 1 오류가 발생합니다.
  2. for-in 루프는 시퀀스 순서를 보장하지 않으며 배열 인 경우에도 순서가 지정되지 않은 속성을 반복하는 데만 사용됩니다. 기존 for(index=0;index<length;index++) (배열 인 경우)
  3. obj 변수가 Array가 아닌 Object 인 경우 객체 데이터 구조에서만 "마지막 속성"을 가져올 수 없으며 더 많은 정보 (속성 순서)를 제공해야합니다.
관련 문제