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)