2012-10-24 4 views
2

사람들에 관한 데이터 목록이 포함 된지도 개체가 있습니다. 모든 사람의 이름은 고유합니다. 각 사람의 데이터 필드에는 동일한 유형의 정보가 포함될 수 없습니다 (예 : Joey는 날짜 필드를 포함하지만 Jill은 포함하지 않습니다).경로 이름의 변수 이름을 통한 액세스 맵

지도 경로의 일부로 변수 이름을 사용하여지도의 특정 부분에 액세스 할 수 있는지 궁금합니다. 다음 고려 :

var data = { 
    'Joey': { 
    'id': '912', 
    'date': 'May 14 2012', 
    }, 
    'Jill': { 
    'id': '231', 
    'login': 'JillM', 
    } 
} 

var name="Joey"; 
var joeyDate = data. + name + .date; //This does not work. Is there an alternative? 

답변

6

사용이 구문 :

data[name]["date"] 

이 또한 작동합니다 data.Joey에 대한 대안이지만, 정적이다.

당신은 또한 사용할 수 있습니다

data[name].date 

의 차이는 당신이에 대해 문의 정확히 무엇인가 - [] 표기법이 경우 점 표기법을 사용하여 자바 스크립트에서 허용되지 않을 동적 검색 가능성이 유효하지 않은 키에 대한 더 . 예를 들어 'date-born'키가있는 경우 data[name].date-born을 사용할 수 없지만 data[name]["date-born"]을 사용할 수 있습니다.

이 사용의 예는 다음과 같습니다

for (name in data) { 
    console.log(data[name].date); 
} 

그러나 물론

, date는 속성해야합니다 (이 "질"에 대한 아닌 경우), 그렇지 않으면 undefined가 반환됩니다.

+1

감사합니다. 그것이 바로 제가 찾고있는 것입니다. 나는 8 분 안에 당신의 대답을 수락 할 것입니다 :) – Jon

관련 문제