0

次のようなデータを持つ 2 つの 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);

(post と posts_objects には 2 つのオブジェクトが含まれます)

それらをこれにマージしたい:

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

ただし、これにより、2 番目のオブジェクトのデータが最初のオブジェクトのデータを上書きすることになります。それらをマージする方法はありますが、代わりに 2 番目のオブジェクトのアイテムを最初のオブジェクトに追加しますか?

4

1 に答える 1

1

「項目を追加する」とは、最初のオブジェクトではなく2 番目のオブジェクトにあるすべてのプロパティを最初のオブジェクトに追加することを意味する場合、次のようになります。

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

動作する可能性があります。それはすべて、必要なコピーセマンティクスに依存します。

于 2012-06-06T12:11:39.993 に答える