2013-06-03 2 views
0

다른 개발자의 일부 코드로 작업 중이며 이전에 보지 못한 것을 발견했습니다. 코드의 기본 기능은 객체 내의 객체에서 데이터 조각을 찾는 것입니다. 객체 형식은 theObj {key:Object, key:Object,...}이고 검색 대상 데이터는 inkey, lookfor의 두 변수에 저장됩니다.자바 스크립트 배열

$.each(theObj, function(m,n){ 
    if(typeof(n['data'][inkey]) != "undefined" && n['data'][inkey] !== null) { 
     if(n['data'][inkey][lookfor] == 1){..} 
    } 
}); 

['data']은 무엇입니까?

+11

그것은 n.data' '와 같은 일이 :

Btw는 당신이나 그 당신이 그런 식으로 쓸 수 n.data.hasOwnProperty(inkey) 대신

typeof(n['data'][inkey]) != "undefined"의를 사용해야합니다. – mash

+2

개체의 키입니다. 의미 n [ 'data']는'객체 n에있는 키 (propery 이름) 데이터의 값 '을 의미합니다. –

+1

** 대괄호 표기법 **이라고합니다. 'data' 또는'n' 객체에 접근합니다. 당신은 이미 배열로부터 이것을 알고 있습니다 :'arr [0]'은 배열의 첫 번째 원소 인'arr'의 속성'0'에 접근합니다. –

답변

2

n['data']n.data과 동일하지만, 언젠가 당신이 n['data'][inkey] 같은 변수를 사용 할 때처럼 괄호를 사용하는 것이 유용합니다.

$.each(theObj, function(m,n){ 
    if(n.data.hasOwnProperty(inkey) && n.data[inkey] !== null) { 
     if(n.data[inkey][lookfor] == 1){..} 
    } 
}); 
4

그것은 개체 n의 속성 data을 찾고 - n['data']하는 n.data

1

data 같은 것은 객체의 속성 이름 또는 키입니다. 따라서 n['data']은 객체 ndata의 속성 이름에 대한 속성 값을 반환합니다.

그리고 가지고있는 것은 객체가 아닌 배열입니다.

배열에는 정수 기반 인덱스가있는 요소 목록이 들어 있으며, else 객체에는 키 기반 인덱스가있는 요소 목록이 들어 있습니다.