2017-09-26 17 views
0

一个只有一个属性的JavaScript object.assign可以说,我们有一个对象 a = { prop1:"something", schema:{ array:[array of object] } } 和b是 b = { array:[array of object] }为不进行复制

,并在对象数组他们有非常不同的值相同的对象。我想用object.assign从b更新a.schema创建一个新对象。 所以我写了类似Object.assign({},a.schema,b)的东西,它返回我这个 { schema: { array:[array of object] } } 。但我不想创建一个副本,然后将此架构复制到新创建的副本中。 我想要这 newObject = { prop1:"something", schema:{ array:[array of object from b] } } 我想创建一个新的对象,看起来就像在一个Object.assign中,这是可能的吗?

+2

你可以做'Object.assign({},a,{schema:b})''。 –

回答

0

这是你可以做什么的例子:

x = {a:1,b:[1,2,3}} y = {c:[4,5,6]} z=Object.assign({},{prop1:x.a},{shcema:y.c})

+0

您必须指定属性 –

0

如果是使用spread syntax没事,你可以这样做:

const a = { 
 
    prop1: 'something', 
 
    schema: { 
 
    array: [ 
 
     { 
 
     \t aprop: 'prop', 
 
     }, 
 
    ], 
 
    }, 
 
}; 
 
const b = { 
 
    array: [ 
 
    { 
 
     bprop: 'test', 
 
    }, 
 
    { 
 
     bprop: 'test2', 
 
    }, 
 
    ], 
 
}; 
 
const updated = { 
 
    ...a, 
 
    schema: b, 
 
}; 
 

 
console.log(updated);