Using spread operator to update an object value

2020-02-09 01:16发布

I have a function which adds a key to incoming object, but I have been told to use spread operator for that, I have been told that I can use the spread operator to create a new object with the same properties and then set isAvailable on it.

  return new Partner(ServerConfig, capabilities, initialState)
}

class Partner {
  constructor (ServerConfig, capabilities, initialState) {
    initialState.isAvailable = true

So I tried something like this but coulndt succeed, can you help me ? and confused, should I use spread operator in this way , return from a function ?

newObject = {}

// use this inside a function and get value from return

   return {
     value: {
       ...newObject,
       ...initialState
     }
   }

initialState.isAvailable = true

1条回答
啃猪蹄的小仙女
2楼-- · 2020-02-09 01:50

The properties are added in order, so if you want to override existing properties, you need to put them at the end instead of at the beginning:

return {
  value: {
    ...initialState,
    ...newObject
  }
}

You don't need newObject (unless you already have it lying around), though:

return {
  value: {
    ...initialState,
    isAvailable: newValue
  }
}

Example:

const o1 = {a: "original a", b: "original b"};
// Doesn't work:
const o2 = {a: "updated a", ...o1};
console.log(o2);
// Works:
const o3 = {...o1, a: "updated a"};
console.log(o3);

查看更多
登录 后发表回答