2012-04-12 41 views
16

Come posso unire oggetti jQuery insiemejquery unire due oggetti

ho

{ 
    "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" 
    } 

Vorrei avere

 { 
     "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" 
    } 
} 

Così entrambi gli oggetti sono sotto un unico oggetto. Potrei avere più di due oggetti.

Gli oggetti vengono creati con ciascuno in jquery.

Non sono sicuro su come iniziare.

+0

Controllare questo post http://stackoverflow.com/questions/2454295/javascript-concatenate-properties-from-multiple-objects-associative-array per una possibile risposta. –

risposta

0

puoi metterli in un array?

var myObjects = []; 

e nella vostra ogni dove sono stati creati solo aggiungere:

myObjects.push(newObject); 
52

jQuery di $.extend farà quello che vuoi.

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

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

È possibile creare un nuovo oggetto in modo dinamico e aggiungerlo a quello principale. Quello di cui ho bisogno sono tutti gli oggetti che hanno il titolo con un valore di A raggruppati e tutti con un titolo di B ecc. Raggruppati insieme in un nuovo oggetto. Così com'è, il JSON non è raggruppato. Potrebbero esserci gruppi illimitati. – Tom

+1

Sì, tutto è possibile! Ma poi non stai più unendo gli oggetti, quindi dovrai eseguire iterazioni sugli oggetti con $ .each o un ciclo while/for, e aggiungere ogni chiave-> valore par con una certa chiave a un nuovo oggetto, e tutti i pars con una chiave diversa per un altro oggetto, ecc. – 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

Nel caso in cui si desidera unirle in modo ricorsivo, $.extend offre l'argomento deep. Nel caso deep=true l'unione viene eseguita in modo ricorsivo. Un esempio di cui sopra,

// 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"); 
}