Javascript 对象与一个对象一起传播,该对象的属性中可能有未定义的对象作为数据
Javascript object spread with an object that may have undefined objects as data in its properties
嘿,我正在尝试填写一个空的占位符对象(在本例中用作 vue 的 v 模型,但对本例而言并不重要)。
我正在扩展原始对象的对象可能有也可能没有内部未定义的某些对象,但无论传入对象的结构如何,我都需要保留第一个对象的结构。
例如
对象 1
let object1 = { a : '', b : '', c : {name : 'Mark', title: 'Mr'}}
和有时会像这样出现的对象 2
let object2 = { a : 'AAA', b : 'BBB', c : undefined}
我需要保留对象 1 的结构,即使另一个对象未定义 属性 c。
在这种情况下
let object1 = { a : 'AAA', b : 'BBB', c : {name : 'Mark', 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)
}
})
}
嘿,我正在尝试填写一个空的占位符对象(在本例中用作 vue 的 v 模型,但对本例而言并不重要)。 我正在扩展原始对象的对象可能有也可能没有内部未定义的某些对象,但无论传入对象的结构如何,我都需要保留第一个对象的结构。 例如 对象 1
let object1 = { a : '', b : '', c : {name : 'Mark', title: 'Mr'}}
和有时会像这样出现的对象 2
let object2 = { a : 'AAA', b : 'BBB', c : undefined}
我需要保留对象 1 的结构,即使另一个对象未定义 属性 c。 在这种情况下
let object1 = { a : 'AAA', b : 'BBB', c : {name : 'Mark', 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)
}
})
}