Javascript 在extjs中合并两个不同的json对象

Javascript 在extjs中合并两个不同的json对象,javascript,json,extjs,extjs4,extjs4.1,Javascript,Json,Extjs,Extjs4,Extjs4.1,假设我的第一个json对象是 "jvtdata":{ "tranid":"100001", "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)", "trantype":"f" } 我的第二个数据是 "detail" : [ { "id": "1", "obj": "data1" }, { "id": "2",

假设我的第一个json对象是

  "jvtdata":{
    "tranid":"100001",
    "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
    "trantype":"f"
  }
我的第二个数据是

 "detail" : [
   {
      "id": "1",
      "obj": "data1"
   },
   {
      "id": "2",
      "obj": "data2"
   },
   {
      "id": "3",
      "obj": "data3"
   }

]
在extjs 4中如何使其成为这样

  "jvtdata":{
    "tranid":"100001",
    "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
    "trantype":"f",
    "detail" : [
   {
      "id": "1",
      "obj": "data1"
   },
   {
      "id": "2",
      "obj": "data2"
   },
   {
      "id": "3",
      "obj": "data3"
   }

]
  }

我相信您需要合并方法:


我相信您需要合并方法:


这不是一个特定于ExtJS的问题

如果您确实有两个对象
jvtdata
detail
(而不是JSON字符串,您可以轻松地转换为对象),则可以简单地执行以下操作:

jvtdata.detail = detail

编辑:请参阅控制台了解此小提琴:

这不是一个特定于ExtJS的问题

如果您确实有两个对象
jvtdata
detail
(而不是一个JSON字符串,您可以很容易地将其转换为一个对象),那么只需执行以下操作:

jvtdata.detail = detail

编辑:请参阅控制台以获取此提琴:

查看您对另一个答案的评论,以下是您要查找的内容(我想?):


看看你对另一个答案的评论,以下是你想要的(我想?):

可能就是你要找的

var first = {
    "jvtdata":{
        "tranid":"100001",
        "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
        "trantype":"f"
    }
};
var second = {
    "detail" : [{
        "id": "1",
        "obj": "data1"
    }, {
        "id": "2",
        "obj": "data2"
    }, {
        "id": "3",
        "obj": "data3"
    }]
};
var merged = {
    jvtdata: Ext.apply(first.jvtdata, second)
};
可能就是你要找的

var first = {
    "jvtdata":{
        "tranid":"100001",
        "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
        "trantype":"f"
    }
};
var second = {
    "detail" : [{
        "id": "1",
        "obj": "data1"
    }, {
        "id": "2",
        "obj": "data2"
    }, {
        "id": "3",
        "obj": "data3"
    }]
};
var merged = {
    jvtdata: Ext.apply(first.jvtdata, second)
};
下面是ExtJS的比较:

Ext.Object.equals(object1, object2)
下面是ExtJS的比较:

Ext.Object.equals(object1, object2)

实际上,这两个json对象是由此创建的:var jvdetailData=Ext.encode({details:Ext.pull(store_jvdtl.data.items,'data'));var jvheaderData=Ext.encode({jvtdata:Ext.pull(store_jvdr.data.items,'data')[0]});我尝试了您所做的,但实际上这两个json对象都不起作用:var jvdetailData=Ext.encode({details:Ext.pluck(store_jvdtl.data.items,'data'));var jvheaderData=Ext.encode({jvtdata:Ext.pull(store_jvdr.data.items,'data')[0]});我尝试了你所做的,但它对我不起作用。嗨,下面的答案对你有帮助吗?嗨,下面的答案对你有帮助吗?
Ext.pulk
自ExtJS 4.0.0以来已被弃用,使用
Ext.Array.pulk
而不是根据#Darin Kolev
Ext.pulk
自ExtJS 4.0.0以来已被弃用,使用
Ext.Array.pull
代替根据Darin Kolev更新的