提问者:小点点

使用扩展运算符更新对象值


我有一个函数可以给传入的对象添加一个键,但是我被告知要使用spread运算符,我被告知可以使用spread运算符创建一个具有相同属性的新对象,然后在它上面设置isAvailable。

  return new Partner(ServerConfig, capabilities, initialState)
}

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

所以我试过这样的方法,但是不能成功,你能帮我吗?和困惑,我应该这样使用spread运算符,从一个函数返回?

newObject = {}

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

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

initialState.isAvailable = true

共1个答案

匿名用户

属性是按顺序添加的,因此如果要重写现有属性,则需要将其放在末尾而不是开头:

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

但是,您不需要newobject(除非您已经有了它):

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

示例:

null

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);