Javascript JS合并两个对象不起作用
我尝试使用以下方法合并不起作用的对象, 如果Javascript JS合并两个对象不起作用,javascript,node.js,typescript,lodash,Javascript,Node.js,Typescript,Lodash,我尝试使用以下方法合并不起作用的对象, 如果this.options将属性置于this.props上,则需要使用this.props默认值 如果知道如何以更短的方式合并它,我会有更多的字段执行相同的操作 this.props!。hostName=this.options.hostName | | this.props!。主机名; 这个,道具!。eventType=this.options.eventType | | this.props!。事件类型; 这个,道具!。eventTypeVersio
this.options
将属性置于this.props
上,则需要使用this.props
默认值
如果知道如何以更短的方式合并它,我会有更多的字段执行相同的操作
this.props!。hostName=this.options.hostName | | this.props!。主机名;
这个,道具!。eventType=this.options.eventType | | this.props!。事件类型;
这个,道具!。eventTypeVersion=this.options.eventTypeVersion | | this.props!。事件类型版本;
这个,道具!。uri=this.options.uri | | this.props!。uri;
我试过下面的方法,但不起作用
this.props=Object.assign(this.props,this.options);
还有这个
this.props=Object.assign(this.options,this.props);
使用排列运算符:
{...props, ...options}
或
您的第一次尝试,
Object.assign(this.props,this.options)
应该可以工作。如果没有,这可能意味着this.options
有一些错误的属性,您希望忽略这些属性。您可以尝试过滤这些内容:
const truthyOptions = Object.entries(this.options)
.filter(([k,v]) => v)
.map(([k, v]) => ({[k]: v}))
this.props = Object.assign(this.props, ...truthyOptions)
Object.assign()
是否抛出错误?@TasosBu-我看到不是…请添加一个与使用Object.assign()完全相同的
const truthyOptions = Object.entries(this.options)
.filter(([k,v]) => v)
.map(([k, v]) => ({[k]: v}))
this.props = Object.assign(this.props, ...truthyOptions)