2012-10-05 4 views
1

javascript 연관 개체를 만들려고하는데 모든 것이 제대로 작동하지만 변수 이름을 만들기 위해 전달 된 변수가 작동하지 않습니다. 변수 값을 문자열로 변환하고 변수를 표시하는 대신 저장합니다. 이름 자체.자바 스크립트 개체 속성을 만드는 동안 오류가 발생했습니다.

var users = {}; 
var genID = someId; 

createObj('userID', function(userID, username, email) { 
users[userID] = { genID: { a: a, b: b, c: c, d: d } }; 
}) 

아래

빠른 샘플은 결과를 예상;

users = { 1: { 11: { a: 1, b: 2, c: 3, d: 4 } } } 

결과 얻기;

users = { 1: { genID: { a: 1, b: 2, c: 3, d: 4 } } }​ 

이 문제를 해결하는 데 도움을주십시오.

답변

2

당신이 한 일을 살펴보십시오. 첫 번째 작업은 users[userID]입니다. 그러나 두 번째 것은 genID하지 않았습니다. 왜냐하면 당신이 객체 표기법을 사용할 때 변수가 아니라 '이름'을 입력한다고 가정하기 때문에 그것이 해결되지 않습니다.

var obj = {}; 
obj[genID] = {a: a, b: b, c: c, d: d}; 
users[userID] = obj; 
+0

감사합니다. 많은 시간을 보내고 디버깅 시간을 허비하고 인터넷을 통해 ans를 검색했습니다. 마지막으로 대답이 문제를 해결했습니다. 고맙습니다 ... – sravis

+0

작은 질문, 자바 스크립트 연관 객체 저장소의 크기 제한과 같은 것이 있습니까? – sravis

+0

:) 있다면, 나는 아직 그것을 치지 않았고, 나는 꽤 큰 물체를 만들었습니다. 그 다리에 도착하면 걱정하지 마라. 이렇게하면 절대 필요하지 않은 정보를 찾아 보는 데 시간을 낭비하게됩니다. 그냥 프로젝트 완료 : – Mutahhir

0
users[userID] = {}; 
users[userID][genID] = { { a: a, b: b, c: c, d: d } }; 
2

당신은 대괄호 구문이 필요합니다 .. 감사합니다 : 발현이 예상되는 경우 기본적으로 genID이 (대괄호 안에) 사용되어야합니다

users[userID] = {}; 
users[userID][genID] = { a: a, b: b, c: c, d: d }; 

. 객체 리터럴이 예상되면 왼쪽에서 사용하고 있습니다. genID은 상수 식별자로 처리되며 평가되지 않습니다.

관련 문제