Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象与一个对象一起传播,该对象的属性中可能有未定义的对象作为数据_Javascript_Vue.js_Spread - Fatal编程技术网

Javascript对象与一个对象一起传播,该对象的属性中可能有未定义的对象作为数据

Javascript对象与一个对象一起传播,该对象的属性中可能有未定义的对象作为数据,javascript,vue.js,spread,Javascript,Vue.js,Spread,嘿,我正在尝试填充一个空的占位符对象(在本例中,它充当vue的v模型,但对本例并不重要)。 我正在扩展原始对象的对象可能有也可能没有未定义的对象,但是我需要保持第一个对象的结构,不管传入对象的结构如何。 例如 对象1 物体2,有时会像这样 let object2 = { a : 'AAA', b : 'BBB', c : undefined} 我需要保持对象1的结构,即使另一个对象的属性c未定义。 在这种情况下 let object1 = { a : 'AAA', b : 'BBB', c :

嘿,我正在尝试填充一个空的占位符对象(在本例中,它充当vue的v模型,但对本例并不重要)。 我正在扩展原始对象的对象可能有也可能没有未定义的对象,但是我需要保持第一个对象的结构,不管传入对象的结构如何。 例如 对象1

物体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}


如果要使用扩展语法,可以定义一个简单的帮助器代理,该代理将自己的键过滤到那些值不是
undefined

let object1={a:'',b:'',c:{name:'Mark',title:'Mr'}
让object2={a:'AAA',b:'BBB',c:undefined}
常量结果={…已定义(object1),…已定义(object2)}
console.log(结果)
功能定义(obj){
返回新代理(obj{
ownKeys(){
返回Object.keys(obj.filter)(key=>obj[key]!==未定义)
}
})

}
复制
object2
,删除未定义的属性。如果您有嵌套对象,我想您可能需要重新考虑使用排列。Spread将只查看对象的顶层。如果我没有弄错
对象,assign({},objectWithDefinedC,ObjectWithoutDefinedC)
将从左到右合并。因此,如果您在未定义对象之前添加它,它应该会正确合并。
object1={…object2,c:object2.c?object2.c:object1.c}
这一个似乎工作得很好(第一个不是这样…),谢谢!
  object1={...object2,c:object1.c}
   object1={...object2,  c : object2.c ? object2.c : object1.c}