2012-04-12 27 views
5

Supongamos que tengo varios objetos javascript¿Cómo puedo añadir javascript objeto a otro objeto en dinámica

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

¿Cómo puedo añadir este objetos a otro objeto como

config={} 

sé si cada objeto insertado tiene una identificación que puedo agregar como:

config["id"]={} 

Pero en este caso, ¿cómo puedo agregar objetos sin identificación?

Respuesta

6

Creo que está mezclando objetos y matrices. Los objetos tienen claves nombradas, las matrices tienen claves numéricas. Se puede añadir fácilmente a una matriz mediante .push():

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

Sin embargo, para un objeto de configuración como el nombre de la variable sugiere que esto no es realmente útil. Usted no debe usar nombres significativos para sus opciones, por ejemplo:

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

También puede almacenar una gran variedad en su objeto:

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

Si estos datos que tiene son del mismo tipo, a continuación, utilizar una matriz en su lugar:

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

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

Y se puede acceder a los elementos de configuración de la siguiente manera:

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

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

Puede siempre agrégalos más tarde.

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

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

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

pero no konw cuántos obj tengo, no puedo definirlos previamente – hh54188

0

Si usted está buscando para añadirlos durante inicialización, esto podría ayudarle salida:

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

estoy usando esta función de utilidad:

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; 
} 

propiedades con el mismo nombre se sobrescribirán con propiedades en las discusiones posteriores

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

resultado:

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