javascript object.assign只为一个属性而不进行复制

时间:2017-09-26 01:22:34

标签: javascript json

假设我们有对象a 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] } } 。但我不想创建a的副本,然后将此模式复制到新创建的副本中。 我想要这个 newObject = { prop1:"something", schema:{ array:[array of object from b] } } 我想创建一个看起来就像在一个Object.assign中的新对象,这可能吗?

2 个答案:

答案 0 :(得分:0)

这是你可以做的一个例子:

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

答案 1 :(得分:0)

如果可以使用spread syntax,您可以这样做:

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

console.log(updated);