【问题标题】:How to correctly merge two multidimensional arrays?如何正确合并两个多维数组?
【发布时间】:2021-02-02 01:21:29
【问题描述】:

我有以下包含对象的数组:

[
  {
    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 但这并没有输出所需的结果。 我感谢每一个信息或解决方案。 提前致谢。

##修复##
我在下面标记了正确答案。然而,因为我编写了整个应用程序以与 typescript 做出反应,所以我找到了解决这个问题的另一种方法。

【问题讨论】:

  • 第二个不是数组

标签: javascript arrays reactjs typescript merge


【解决方案1】:

更新的答案给出了你想要的结果,但是它是,使用 jQuery,原型 $.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>

【讨论】:

  • 根据OP,第三个对象应该组合在第一个,并且只需要附加sub属性
  • 啊拍摄,@KunalMukherjee 你完全正确,我错过了子部分。我会马上解决的。
  • 对不起,我忘记了一点代码。如果“sub:{}”看起来像“sub:[{}]”,它是否也有效?
  • 黄金法则,一致性是关键,如果你打算在 sub: 中保存多个子元素,那么保持数组结构“[{}]”,如果你用多个和另一个不行,还是加[],让它一致。
  • @Max 检查编辑后的答案,它应该为您提供所需的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 2020-04-21
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
相关资源
最近更新 更多