合并 Javascript 对象中的嵌套数组

Gav*_*Ang 5 javascript arrays merge lodash

我需要将 2 个对象与嵌套数组合并

var dest = {
  id: "865",
  arr: [{
    id: "123",
    value: "First" }]
};

var src = {
  id: "865",
  arr: [{
    id: "456",
    value: "Second" }]

};
Run Code Online (Sandbox Code Playgroud)

生产

merge = {
  id: "865",
  arr: [{id: "123",
         value: "First"},
        {id: "456",
         value: "Second"}]
};
Run Code Online (Sandbox Code Playgroud)

我尝试使用 _.merge(dest, src) (使用 Lodash)和其他一些方法,但似乎第二个对象正在覆盖第一个对象,因为它没有按照我想要的方式处理嵌套数组。

做这个的最好方式是什么?

谢谢,

aco*_*ell 5

您可以使用 Lodash _.mergeWith方法:

var dest = {
  id: "865",
  arr: [{
    id: "123",
    value: "First"
  }]
};

var src = {
  id: "865",
  arr: [{
    id: "456",
    value: "Second"
  }]

};

var merge = _.mergeWith({}, src, dest, function(a, b) {
  if (_.isArray(a)) {
    return b.concat(a);
  }
});
console.log(merge);
Run Code Online (Sandbox Code Playgroud)

它允许您传递定制器以便以“定制”方式合并数组。

这是小提琴。希望能帮助到你。