Есть ли способ переназначить значение объекта «на лету» с помощью деструктурирования в ES6?

#javascript #node.js #ecmascript-6 #axios

#javascript #node.js #ecmascript-6 #axios

Вопрос:

 const user = {}
user.fname = John
user.lname = Doe


axios.post({
    url,
    headers,
    params: user // but here I want to have the fname set to Jane instead of John
}).then(...).catch(...)
  

Я знаю, что могу установить его раньше, но мне нужно делать это «на лету» прямо при использовании объекта.

Спасибо.

Ответ №1:

Не совсем ES6, потому что расширенная нотация для объектов новее, но вы можете

 axios.post({
    url,
    headers,
    params: { ...user, fname: 'Jane' }
}).then(...).catch(...)
  

Ответ №2:

Как насчет оператора распространения?

 axios.post({
    url,
    headers,
    params: {
       ...user,
       fname: 'Jane' // but here I want to have the fname set to Jane instead of John
    }
}).then(...).catch(...)
  

Вы также можете использовать Object.assign как:

 Object.assign(user, { fname: 'Jane' })
  

Ответ №3:

Вы можете использовать синтаксис spread, чтобы сохранить другие свойства и перезаписать то, что вам нужно:

 const user = {}
user.fname = John
user.lname = Doe


axios.post({
    url,
    headers,
    params: {...user, fname: "Jane"} 
}).then(...).catch(...)