2012-04-07 17 views
1
storeChildren : function(coreid, data) { 
    $.each(data, function(id, type) { 
    $.core.children[coreid] = {}; 
    $.core.children[coreid]['id'] = id; 
    $.core.children[coreid]['type'] = type; 
    }); 
} 

($ .core.childrenが対象です)Javascriptの多次元配列/ハッシュテーブル

私は結果の配列/オブジェクトをしたい(私はオブジェクトを好む)(私のPHPの擬似コードを言い訳)このように見えるように:

array(coreid => array(id=>type, id=>type, id=>type)); 

私は$ .core.children [coreid]を上書きしていることがわかります。ループを実行するたびに、修正する方法がわかりません。

+0

私はオブジェクトを代わりに使用する 'var obj = {key:value、key:value、...}' – elclanrs

答えて

2

あなたのすべてのIDが一意の場合は、次のように動作します。これはあなたの後に何ですか?

storeChildren : function(coreid, data) { 
    $.core.children[coreid] = {}; 
    $.each(data, function(id, type) { 
    $.core.children[coreid][id] = type; 
    }); 
} 
+0

私のすべてのIDは一意です。とても明らか!ありがとう。 –

0
init: function() { 
    $.core.children = []; // instantiate array 
}, 

storeChildren : function(coreid, data) { 

    $.each(data, function(id, type) { 
     $.core.children[coreid] = {id : type}; 
    }); 
} 

他の場所で、あなたのコード内のオブジェクトをインスタンス化し、その後、あなたがするたびに、オブジェクト/連想配列を殺すことはありません。上記の例はまた、JSON表記でのアレイの代わりに、配列、その結果、内部オブジェクトを使用して次のように見える:

[ {key,value} , {key,value} , {key,value} , ...] 

のCOREidは、配列のインデックスです。