0

我有两个带有如下数据的 javascript 对象:

{
   "data": [
      {
         "foo": "2388163605_10150954953808606",
         "bar": {
            "xyz": "123",
         },
         "name": {
            "name": [
               {
                  "content": 1,
                  "data": "some text",
                  "id": "2388163605"
               }
            ]
         },
        },
        {
         "not_the_same": "other values",
         "foo": "different",
         "bar": {
            "xyz": "123",
         },
         "name": {
            "name": [
               {
                  "content": 1,
                  "data": "some text",
                  "id": "2388163605"
               }
            ]
         },
        }]
}

第二个:

{
   "data": [
      {
         "foo": "123+09",
         "bar": {
            "xyz": "1adad0",
         },
        },
      }]
}

如您所见,属性等有所不同,当然值也有所不同。他们也没有相同数量的项目。我正在尝试像这样合并它们:

$.extend(true,posts, posts_object);

(posts 和 posts_objects 包含这两个对象)

我想将它们合并到这个:

{
   "data": [
      {
         "foo": "2388163605_10150954953808606",
         "bar": {
            "xyz": "123",
         },
         "name": {
            "name": [
               {
                  "content": 1,
                  "data": "some text",
                  "id": "2388163605"
               }
            ]
         },
        },
        {
         "not_the_same": "other values",
         "foo": "different",
         "bar": {
            "xyz": "123",
         },
         "name": {
            "name": [
               {
                  "content": 1,
                  "data": "some text",
                  "id": "2388163605"
               }
            ]
         },
        },
      {
         "foo": "123+09",
         "bar": {
            "xyz": "1adad0",
         },
        },
      }]
}

但是,这会导致来自第二个对象的数据覆盖第一个对象的数据。有没有办法合并它们,而是将第二个对象中的项目添加到第一个对象?

4

1 回答 1

1

如果通过“添加项目”,您的意思是您希望在第二个对象中但不在第一个对象中的所有属性最终都添加到第一个对象中,那么

var tmp;
$.extend(true, tmp, posts);
$.extend(true, posts, posts_object);
$.extend(true, posts, tmp);

可能会奏效。这完全取决于您想要什么复制语义。

于 2012-06-06T12:11:39.993 回答