2012-04-12 151 views
16

如何合併jQuery的對象一起jQuery的合併兩個對象

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

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

因此,無論對象是下一個對象。我可能有兩個以上的對象。

這些對象是用jquery中的每個對象創建的。

我不知道該如何開始。

+0

檢查此帖http://stackoverflow.com/questions/2454295/javascript-concatenate-properties-from-multiple-objects-associative-array爲可能的答案。 – 2012-04-12 20:13:00

回答

0

你可以把它們放在一個數組中嗎?

var myObjects = []; 

,並在您每次在那裏創建只需添加:

myObjects.push(newObject); 
52

jQuery的$.extend會做你想要什麼。

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

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

是否可以動態創建一個新對象並將其添加到父對象。我需要的是所有標題的值都是A的所有對象,所有對象的標題都是B等等。在一個新對象中組合在一起。因爲它站在json沒有分組。可能會有無限的羣體。 – Tom 2012-04-12 20:34:12

+1

是的,任何事情都是可能的!但是你不再只是合併對象,所以你必須用$ .each或者while/for循環迭代對象,並且將每個key-> value的值與一個特定的key添加到一個新的對象中,並且所有的parser與另一個對象的不同鍵 – adeneo 2012-04-12 21:46:23

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

如果你想遞歸地將它們合併,$.extend提供了論據deep。如果deep=true合併成爲遞歸。上面的例子,

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