2012-04-07 42 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 ist ein Objekt)Javascript mehrdimensionales Array/Hashtable

ich das resultierende Array/object wollen (ich ziehe Objekte) wie folgt aussehen (entschuldigen Sie meine PHP Pseudo-Code):

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

Ich weiß, ich überschreibe $ .core.children [celeid] jedes Mal, wenn ich die Schleife ausführen Ich weiß nur nicht, wie ich es beheben kann.

+0

Ich würde stattdessen ein Objekt verwenden 'var obj = {Schlüssel: Wert, Schlüssel: Wert, ...}' – elclanrs

Antwort

2

Wenn alle Ihre IDs eindeutig sind, sollte folgendes funktionieren; Ist das das wonach du suchst?

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

Alle meine IDs sind einzigartig. So offensichtlich! Vielen Dank. –

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

storeChildren : function(coreid, data) { 

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

Instantiate das Objekt an anderer Stelle im Code, dann werden Sie die assoziativen Arrays nicht töten/jedes Mal widersprechen. Das obige Beispiel verwendet auch ein Objekt in Ihrem Array anstelle eines Arrays, das Ergebnis in JSON Notation sieht wie folgt:

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

Der coreid der Index des Arrays ist.