Javascript 如何合并对象-lodash?

Javascript 如何合并对象-lodash?,javascript,lodash,Javascript,Lodash,我最近开始使用,我想合并以下对象 对象: var firstObj= var secondObj= 合并对象/结果: 我所尝试的: 如果您有任何建议,请在您可以阅读的文档中提供,您必须使用定制器功能为您定制阵列。() 此方法如下所示: function customizer(objValue, srcValue) { if (_.isArray(objValue)) { return objValue.concat(srcValue); } } 下面是您的示例中使用的: 如

我最近开始使用,我想合并以下对象

对象: var firstObj= var secondObj= 合并对象/结果: 我所尝试的:


如果您有任何建议,请在您可以阅读的文档中提供,您必须使用定制器功能为您定制阵列。()

此方法如下所示:

function customizer(objValue, srcValue) {
  if (_.isArray(objValue)) {
    return objValue.concat(srcValue);
  }
}
下面是您的示例中使用的:

如果希望更好地了解合并方法内部发生的情况:

Merge以传递的第一个对象为基础。然后它循环遍历它所传递的其他对象中的所有键(按参数顺序)。它做两件事:

  • 如果第一个对象不包含键,它将添加键及其值
  • 如果第一个对象已经包含该键,它将覆盖其值
通过使用mergeWith,您有机会覆盖此行为。您可以传递用于处理第二种情况的方法。如果你想回到默认的合并行为,你必须使你的方法返回undefined。

试试这个

{
   "1" : [
           {
             name: "gautham",
             age : 17
           },

           {
             name: "mathan",
             age : 19
            }
         ],
    "2" : [
           {
             name: "ashok",
             age : 16
           },

           {
             name: "dharani",
             age : 20
            }
         ]
}
{
   "1" : [
           {
             name: "karthick",
             age : 25
           },

           {
             name: "arun",
             age : 20
            },
           {
             name: "gautham",
             age : 17
           },

           {
             name: "mathan",
             age : 19
            }
        ]
    "2" : [
           {
             name: "varun",
             age : 25
           },

           {
             name: "smith",
             age : 20
            },
           {
             name: "ashok",
             age : 16
           },

           {
             name: "dharani",
             age : 20
            }
        ]
}    
function customizer(objValue, srcValue) {
  if (_.isArray(objValue)) {
    return objValue.concat(srcValue);
  }
}
var output = {};
var firstObjKeys = Object.keys(firstObj);
var secondObjKeys = Object.keys(secondObj).filter(function(val){
  return firstObjKeys.indexOf(val) == -1;
});

var allKeys = firstObjKeys.concat(secondObjKeys);
allKeys.forEach(function(val){
  var firstArr = firstObj[val] || [];
  var secondArr = secondObj[val] || [];
  output[val] = firstArr.concat(secondArr);
})
document.body.innerHTML += JSON.stringify(output,0,4)