网站搜索

javascript - 如何正确合并两个对象数组?


我有一个包含对象的数组如下:

[
  {
    name: "test",
    sub: {
      name: "asdf",
      sub: {}
    }
  },
  {
    name: "models",
    sub: {}
  }
]

我还有以下对象:

{
  name: "test",
  sub: {
    name: "asdf",
    sub: {
      name: "inside_asdf",
      sub: {}
    }
  }
}

现在我想以某种方式把两者合并,这样我就能得到一个看起来像这样的数组:

[
  {
    name: "test",
    sub: {
      name: "asdf",
      sub: {
        name: "inside_asdf",
        sub: {}
      }
    }
  },
  {
    name: "models",
    sub: {}
  }
]

问题是我不知道如何做到这一点。我还希望它可以适用于任何数组深度,所以如果我想将一个数组合并到“inside_asdf”的子对象中,它也能工作。希望有人能帮我。我也已经尝试过 Object.merge,但这并没有输出所需的结果。对于任何信息或解决方案,我都非常感激。提前感谢。

##FIX##
我在下面标记了正确答案。然而,因为我用 TypeScript 在 React 中编写了整个应用程序,我找到了这个问题的另一个解决方案。

答案#1


更新的答案给出了你想要的结果,无论如何,它使用了 jQuery、Prototype 的 $.extend。

并不是说我又一次把 aaaa 用 [] 数组标签包起来了,因为它需要具有相同的结构。

实现你想要的完整代码:

var data = [
  {
    name: "test",
    sub: {
      name: "asdf",
      sub: {}
    }
  },
  {
    name: "models",
    sub: {}
  }
];

var aaaa = [{
    name: "test",
    sub: {
      name: "asdf",
      sub: {
        name: "inside_asdf",
        sub: {}
      }
    }
  }];


console.log($.extend({}, data, aaaa));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>