2012-04-17 4 views
0

for 루프를 객체를 부모 객체의 자식으로 생성하고 싶다. 일반적으로,이 같은 for 루프를 사용하지 않고 객체를 선언합니다 :for 루프에서 개체 만들기. 나는 조금을 놓치고있다.

var mObj = {}; 
mObj.obj1 = {}; 
mObj.obj2 = {}; 
mObj.obj3 = {}; 
mObj.obj3.firstname = "john"; 
mObj.obj3.lastname = "superfly"; 

는 지금은 부모 객체 "MOBJ"의 자녀 개체를 만들 수있는 루프를 사용하고 싶은 말을 할 수 있습니다.

var mArr = ["firstname","lastname","email"]; // This array holds the keys for the objects 

var mObj = {}; 

var len = (mArr.length); 

for(var i=0; i<len; i++){ 

     var obj+i = {} 
     mObj = obj+i; 
     mObj.obj + i.mArr[i] = "" 

    } 

그래서 이것의 결과는 다음과 같습니다 : 내가 잘못 가고 어디

입니다

mObj.obj1.firstname = ""; 
mObj.obj2.lastname = ""; 
mObj.obj3.email = ""; 
난 그냥에 대한 내에서 생성되는 카운터 객체의 이름을 수없는 것

루프는 다음과 같습니다 :

obj1 
obj2 
obj3 

어떤 도움을 주셔서 감사합니다.

감사합니다.

답변

1

var obj+i = {} 구문이 잘못되었습니다.

이 시도 :

mObj['obj' + i] = {}; 

제가 == 1이 MOBJ [ 'OBJ1'] = {}를 제공하는 경우; 에 equiavlent되어

: 동적으로 구성 할 때

mObj.obj1 

는하지만, 당신은

mObj['obj' + i] 

포맷을 사용해야합니다.

+0

덕분에 많이. 약간의 팔꿈치 기름 후에, 나는 그것을 얻었다. 나는 그 놈들을 시험하기 위해 몇 시간을 보낸다. 구문이 나를 쫓아 내고 있었다. – Combustion007

0

동적 변수를 지정하려면 대괄호 구문을 사용해야합니다. 예를 들어 :

var sampleObj = {}; 

for(var j = 0; j < 3; j++) 
{ 
    sampleObj["obj" + j] = { test: j }; 
} 

이 다음 개체 생성한다 : 다음 루프를 실행 한 후

{ 
    "obj1" : { test: 1 }, 
    "obj2" : { test: 2 }, 
    "obj3" : { test: 3 } 
} 

을, 당신은 유효이 문을 사용할 수

var testVal = sampleObj.obj1.test; 
+0

var keyArr = [ "firstname", "lastname", "email"] var valArr = [ "John", "Superfly", "[email protected]"]; mObj = {}, len = (mArr.length), i = 0; for (; i Combustion007

1
var mArr = ["firstname","lastname","email"], 
    mObj = {}, 
    len = (mArr.length), 
    i = 0; 

for(; i<len; i++){ 
     myObj['obj' + i] = {} 
     myObj['obj' + i].mArr[i] = "" 
    }