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中的顺序对