JavaScript串联嵌套对象扩展运算符

JavaScript串联嵌套对象扩展运算符,javascript,Javascript,我有下面的示例代码 var myObj1 = { name: { first: "First", last: "Last" } }; var myObj2 = { name: { first: "Other", middle: "Middle" } }; var myMainObj = { ...myObj1, ...myObj2 }; console.log(myMainObj

我有下面的示例代码

var myObj1 = {
    name: {
        first: "First",
        last: "Last"
    }
};

var myObj2 = {
    name: {
        first: "Other",
        middle: "Middle"
    }
};

var myMainObj = {
    ...myObj1,
    ...myObj2
};

console.log(myMainObj);
我希望myMainObj的

{
    name: {
        first: "Other",
        middle: "Middle",
        last: "Last"
    }
}
但是
myMainObj
最终是:

{
    name: {
        first: "Other",
        middle: "Middle"
    }
}
我有两个目标。我希望基本上将它们结合起来,并且能够将优先级分配给其中一个对象而不是另一个对象

这两个对象都来自外部源,因此结构和数据不能得到保证,我必须考虑不同结构中的数据

既然spread操作符只对对象的根级别起作用,我怎么能轻松做到这一点呢

我正在寻找最干净、最简单的解决方案

这应该可以:

var myMainObj = {
    name: {
        ...myObj1.name,
        ...myObj2.name
    }
};
如果您需要执行更深入的合并,则必须实施您自己的合并。

这应该可以:

var myMainObj = {
    name: {
        ...myObj1.name,
        ...myObj2.name
    }
};
如果需要执行更深入的合并,则必须实现自己的合并。

您可以使用lodash库中的方法来实现此合并。lodash维护人员已经完成的工作,无需重新发明轮子,只需使用他们的lib即可

此方法类似于
,只是它递归地合并了own和 将源对象的可枚举字符串键控属性继承到 目标对象

var myObj1={
姓名:{
第一:“第一”,
最后:“最后”
}
};
var myObj2={
姓名:{
第一:“其他”,
中间:“中间”
}
};
var myMainObj=u2;.merge({},myObj1,myObj2)
console.log(myMainObj)
您可以使用lodash库中的方法进行此操作。lodash维护人员已经完成的工作,无需重新发明轮子,只需使用他们的lib即可

此方法类似于
,只是它递归地合并了own和 将源对象的可枚举字符串键控属性继承到 目标对象

var myObj1={
姓名:{
第一:“第一”,
最后:“最后”
}
};
var myObj2={
姓名:{
第一:“其他”,
中间:“中间”
}
};
var myMainObj=u2;.merge({},myObj1,myObj2)
console.log(myMainObj)

对不起,我忘了提到这两个对象都来自外部源。所以它们可能是超级随机对象。在这种情况下,您必须递归地循环所有对象并合并它们。对不起,我忘了提到这两个对象都来自外部源。所以它们可能是超随机的物体。在这种情况下,您必须递归地遍历所有内容并合并它们。在本例中,
myObj1
优先于
myObj2
,因为
中的顺序。merge
?@CharlieFish是。在本例中,
myObj1
优先于
myObj2
,因为
.merge
?@CharlieFish中的顺序对