2012-04-12 35 views
16

Làm thế nào tôi có thể kết hợp jquery đối tượng cùngjquery hợp nhất hai đối tượng

Tôi có

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

Tôi muốn có

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

Vì vậy, cả hai đối tượng đều do một đối tượng. Tôi có thể có nhiều hơn hai đối tượng.

Các đối tượng được tạo với mỗi đối tượng trong jquery.

Tôi không chắc chắn cách bắt đầu.

+0

Kiểm tra bài đăng này http://stackoverflow.com/questions/2454295/javascript-concatenate-properties-from-multiple-objects-associative-array để có câu trả lời có thể. –

Trả lời

0

bạn có thể đặt chúng trong một mảng không?

var myObjects = []; 

và trong mỗi bạn, nơi họ được tạo ra chỉ cần thêm:

myObjects.push(newObject); 
52

jQuery $.extend sẽ làm những gì bạn muốn.

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

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

Có thể tạo một đối tượng mới một cách linh hoạt và thêm đối tượng đó vào đối tượng gốc hay không. Những gì tôi cần là tất cả các đối tượng có tiêu đề với một giá trị của một nhóm và tất cả với một tiêu đề của B vv .. nhóm lại với nhau trong một đối tượng mới. Vì nó là viết tắt của json không được nhóm lại. Có thể có các nhóm không giới hạn. – Tom

+1

Có, mọi thứ đều có thể! Nhưng sau đó bạn không chỉ kết hợp các đối tượng nữa, vì vậy bạn sẽ phải lặp qua các đối tượng với $ .each hoặc một vòng lặp while/for, và thêm mỗi mệnh giá khóa-> với một khóa nhất định vào một đối tượng mới và tất cả các phân tích cú pháp với một khóa khác cho một đối tượng khác, v.v. – 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

Trong trường hợp bạn muốn kết hợp chúng một cách đệ quy, $.extend cung cấp đối số deep. Trong trường hợp deep=true quá trình hợp nhất trở thành đệ quy. Một ví dụ ở trên,

// 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"); 
} 
Các vấn đề liên quan