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 = {}は無効な構文です。

この試した:i == 1の場合

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

が、これは 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] = "" 
    } 
関連する問題