2012-04-12 9 views
5

Angenommen hinzufügen Ich habe mehrere Javascript-ObjektWie kann ich JavaScript-Objekt auf ein anderes Objekt in dynamischen

{"type":"gotopage","target":"undefined"} 
{"type":"press","target":"a"} 
{"type":"rotate","target":"long"} 

Wie kann ich diese auf ein anderes Objekt Objekte wie

config={} 

Ich weiß, wie wenn jeder eingefügtes Objekt habe eine ID, die ich hinzufügen kann als:

config["id"]={} 

Aber in diesem Fall, wie kann ich Objekte ohne ID hinzufügen?

Antwort

6

Ich denke, Sie vermischen Objekte und Arrays. Objekte haben benannte Schlüssel, Arrays haben numerische Schlüssel. Sie können ganz einfach auf ein Array anhängen mit .push():

var arr = []; 
arr.push("something"); 

jedoch für ein Konfigurationsobjekt als Variable Name schon sagt dies nicht wirklich nützlich ist. Sie sollten eher beschreibende Namen für Ihre Optionen verwenden, zB:

var config = { 
    something: 'blah', 
    foo: 'bar' 
}; 

Sie können auch ein Array in Ihrem Objekt speichern:

config.manyStuff = []; 
for(...) { 
    manyStuff.push(...); 
} 
1

Wenn diese Daten Sie sind vom gleichen Typ haben, dann ein Array verwenden, anstatt:

var some_data = {"type":"gotopage","target":"undefined"} 

var config = []; 
var config.push(some_data); //and do this for the rest 

Und Sie können die Config-Elemente wie folgt zugreifen:

var someVariable = config[index]; //where index is a number starting from 0 
10
var obj1 = {"type":"gotopage","target":"undefined"}; 

var config = {}; 
config.obj1 = obj1; 

Sie können füge sie immer später hinzu.

var obj1 = {"type":"gotopage","target":"undefined"}; 

var config = {}; 
config.obj1 = obj1; 

var obj2 = {"key":"data"}; 
config.obj2 = obj2; 
+1

aber ich konw nicht, wie viele obj ich habe, kann ich sie vorher nicht definieren – hh54188

0

Wenn Sie sie während intialization suchen hinzuzufügen, dies könnte Ihnen helfen out:

var config = [ 
       {"type":"gotopage","target":"undefined"}, 
       {"type":"press","target":"a"}, 
       {"type":"rotate","target":"long"} 
       ] 
0

ich verwende diese Nutzenfunktion:

module.exports.combine = function() { 

    var rv = {}; 
    for (i = 0; i < arguments.length; i++) { 
    for (thing in arguments[i]) { 
     rv[thing]=arguments[i][thing]; 
    } 
    } 
    return rv; 
} 

Eigenschaften mit dem gleichen Namen werden von Eigenschaften in späteren Argumente

var util = require('lib/util.js'); 
console.log(util.combine(
    {"1":"one","two":function(){;}, 
    {"four":{"four.5":"four.5-b"}, "5":"foo"}}); 

Ergebnis überschrieben:

{ '1': 'one', 
    '5': 'foo', 
    two: [Function], 
    four: { 'four.5': 'four.5-b' } } 
Verwandte Themen