2012-04-12 46 views
16

Cómo puedo combinar objetos jQuery juntosjQuery combinar dos objetos

tengo

{ 
    "merchantcontract":"Ready Reserve Foods 10104.01", 
    "merchantcontractid":"c4253769-5a57-e111-b935-00155d010302", 
    "smi_transactiondate":"\/Date(1332140400000)\/", 
    "smi_glamount2":15.2600, 
    "smi_transactionclass":180870001, 
    "smi_transactionclassname":"Residual Agent Commission", 
    "smi_contractprodcutidname":"Traditional", 
    "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}, 

{ 
    "merchantcontract":"Ready Reserve Foods 10104.01", 
    "merchantcontractid":"c4253769-5a57-e111-b935-00155d010302", 
    "smi_transactiondate":"\/Date(1332140400000)\/", 
    "smi_glamount2":2.6000, 
    "smi_transactionclass":180870001, 
    "smi_transactionclassname":"Residual Agent Commission", 
    "smi_contractprodcutidname":"Traditional", 
    "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
    } 

me gustaría tener

 { 
     "merchantcontract":"Ready Reserve Foods 10104.01", 
     "merchantcontractid":"c4253769-5a57-e111-b935-00155d010302", 
     "smi_transactiondate":"\/Date(1332140400000)\/", 
     "smi_glamount2":15.2600, 
     "smi_transactionclass":180870001, 
     "smi_transactionclassname":"Residual Agent Commission", 
     "smi_contractprodcutidname":"Traditional", 
     "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
     "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
     }, 

     { 
     "merchantcontract":"Ready Reserve Foods 10104.01", 
     "merchantcontractid":"c4253769-5a57-e111-b935-00155d010302", 
     "smi_transactiondate":"\/Date(1332140400000)\/", 
     "smi_glamount2":2.6000, 
     "smi_transactionclass":180870001, 
     "smi_transactionclassname":"Residual Agent Commission", 
     "smi_contractprodcutidname":"Traditional", 
     "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
     "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
     } 

    {"merchantcontract":"Ready Reserve Foods 10104.01"{ 

     "merchantcontractid":"c4253769-5a57-e111-b935-00155d010302", 
     "smi_transactiondate":"\/Date(1332140400000)\/", 
     "smi_glamount2":15.2600, 
     "smi_transactionclass":180870001, 
     "smi_transactionclassname":"Residual Agent Commission", 
     "smi_contractprodcutidname":"Traditional", 
     "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
     "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
    }, 
    { 

     "merchantcontractid":"c4253769-5a57-e111-b935-00155d010302", 
     "smi_transactiondate":"\/Date(1332140400000)\/", 
     "smi_glamount2":2.6000, 
     "smi_transactionclass":180870001, 
     "smi_transactionclassname":"Residual Agent Commission", 
     "smi_contractprodcutidname":"Traditional", 
     "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
     "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
    } 
} 

Así que ambos objetos son menores de un objeto. Puedo tener más de dos objetos.

Los objetos se crean con cada uno en jquery.

No estoy seguro de cómo empezar a trabajar en esto.

+0

Comprobar este post http://stackoverflow.com/questions/2454295/javascript-concatenate-properties-from-multiple-objects-associative-array para una posible respuesta. –

Respuesta

0

¿Puedes ponerlos en una matriz?

var myObjects = []; 

y en su cada en el que se crean sólo tiene que añadir:

myObjects.push(newObject); 
52

jQuery de $.extend va a hacer lo que quiere.

//merging two objects into new object 
var new_object = $.extend({}, object1, object2); 

//merge object2 into object1 
$.extend(object1, object2); 
+0

¿Es posible crear un nuevo objeto dinámicamente y agregarlo al principal? Lo que necesito son todos los objetos que tienen el título con un valor de A agrupado y todos con un título de B, etc. agrupados en un nuevo objeto. Tal como está, el json no está agrupado. Podría haber grupos ilimitados. – Tom

+1

Sí, ¡todo es posible! Pero entonces ya no solo está fusionando objetos, entonces tendrá que iterar sobre los objetos con $ .each o while/for loop, y agregará cada clave-> valor par con una cierta clave a un nuevo objeto, y todos los pares con una llave diferente a otro objeto, etc. – adeneo

8
anObj={'propone':'1', 'proptwo':'2'}; 
anotherObj={'propel':'11', 'proptlv':'12'}; 
var opts = {}; 
$.extend(opts, anObj, anotherObj, { 
    bar: "baz", 
    thing: "foo" 
}); 
console.log(opts); 

Example

2

En caso de que desee combinarlos de forma recursiva, $.extend ofrece el argumento deep. En el caso deep=true la fusión se vuelve recursiva. Un ejemplo de arriba,

// Initialize two objects. 
var json1 = { "a": { "a1": "value1", "a2": "value2" }}; 
var json2 = { "a": { "a3": "value3" }}; 

// Merge them recursively. 
var newJson = $.extend(true, {}, json1, json2); 

// Test it. 
if (newJson.a.a1 && newJson.a.a3) { 
    console.log("Success"); 
}