2012-04-19 19 views
1

私はこれでほとんど存在しますが、この機能を計画どおりに進めることはできません。親オブジェクトに動的オブジェクトを作成し、キーと値を割り当てる?

私は2つの配列を持っています:keyArrayとValArray;

私がしようとしているのは、2つの引数(keyArr、valArr)を関数に渡すことです。この関数内で、親オブジェクトが宣言され、渡された引数の長さ(この場合は "keyArr")をループする(forループ)と、渡された引数の長さに従って新しいオブジェクトが作成されます。そして、新しく作成されたオブジェクトにキーと値が割り当てられます。

問題は、親オブジェクト "mObj"と子オブジェクト "mObj"を作成できますが、子オブジェクトの最初の子オブジェクト "obj0"へのキーと値のみをアサインできることです。オブジェクトが正しく表示されます。コードの最後に、これは私が取得したいと思いです:

enter code heremObj.obj0.firstname = John; 
mObj.obj0.lastname = superfly; 
mObj.obj0.email = "[email protected]"; 

mObj.obj1.firstname = John; 
mObj.obj1.lastname = superfly; 
mObj.obj1.email = "[email protected]"; 

mObj.obj2.firstname = John; 
mObj.obj2.lastname = superfly; 
mObj.obj2.email = "[email protected]"; 

これは私のコードです:

var keyArr = ["firstname","lastname","email"]; 
var valArr = ["John","Superfly","[email protected]"]; 

function test(keys,vals) // FUNCTION TEST ACCEPTS TWO ARGS 
{ 
    var mObj = {}; // PARENT OBJECT 
    var len = (keys.length); //ARGUMENT KEY'S LENGTH 

    for(var i=0; i<len; i++) 
    { 
     mObj["obj" + i] = {}; //CHILDREN OBJECTS ARE CREATED TO PARENT "mObj" OBJECT 
     mObj["obj" + i][keys[i]] = vals[i]; //KEYS AND VALUES ARE ASSIGNED HERE 
    } 

     alert(mObj.obj1.firstname); // CURRENTLY RETURNS "UNDEFINED" 
} 

test(keyArr,valArr); 

この内の任意の洞察力が高く評価されるだろう。 ありがとうございます。

+0

私があなたのコードから得られないものは、同じデータの3つのセットで終わる方法です。私は3つのセットを作るための制約は全く見ません。 – Joseph

答えて

2

あなたが必要としているようです。このコードは、keyArrvalArr配列の長さと同じ数の子オブジェクトを作成します。なぜあなたはそれが必要なのか分かりません。

var keyArr = ["firstname", "lastname", "email"]; 
var valArr = ["John", "Superfly", "[email protected]"]; 

function test(keys, vals) { 
    var mObj = {}, 
     i, j, len = keys.length; 

    for (i = 0; i < len; i++) { 
     mObj["obj" + i] = {}; 
     for (j = 0; j < len; j++) { 
      mObj["obj" + i][keys[j]] = vals[j]; 
     } 
    } 

    alert(mObj.obj1.firstname); 
} 

console.log(test(keyArr, valArr));​ 
+0

ありがとう。あなたはそれを釘付けにした。私はfor-loopingを1回しかせず、2回繰り返す必要があるとは思わなかった。私はこれを本当に感謝しています....素晴らしい – Combustion007

関連する問題