如何解决Javascript对象散布着一个对象,该对象的属性中可能包含未定义的对象作为数据
嘿,我正在尝试填写一个空的占位符对象(在这种情况下,它用作vue的V模型,但对这种情况并不重要)。 我正在扩展原始对象的对象中可能有也可能没有未定义的对象,但是无论传入对象的结构如何,我都需要保持第一个对象的结构。 例如 对象1
let object1 = { a : '',b : '',c : {name : 'Mark',title: 'Mr'}}
和对象2有时会像这样
let object2 = { a : 'AAA',b : 'BBB',c : undefined}
即使另一个对象的属性c未定义,我也需要保持对象1的结构。 在这种情况下
let object1 = { a : 'AAA',title: 'Mr'}}
谢谢
解决方法
尝试将object2
作为第一项传播,然后将属性c
作为第二项:
object1={...object2,c:object1.c}
或
object1={...object2,c : object2.c ? object2.c : object1.c}
,
如果要使用扩展语法,则可以定义一个简单的帮助代理,该代理可以将自己的键过滤为具有undefined
以外的值的键。
let object1 = {a: '',b: '',c: {name: 'Mark',title: 'Mr'}}
let object2 = {a: 'AAA',b: 'BBB',c: undefined}
const result = { ...defined(object1),...defined(object2) }
console.log(result)
function defined(obj) {
return new Proxy(obj,{
ownKeys() {
return Object.keys(obj).filter(key => obj[key] !== undefined)
}
})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。