【问题标题】:Assign value to new object via destructuring通过解构为新对象赋值
【发布时间】:2018-03-12 08:11:28
【问题描述】:

如何通过解构分配给对象?例如

let parameter = {id : 10, username : 'john'}
let obj = {}
({id : obj.iduser, username : obj.user} = parameter)

预期:

{iduser : 10, user : 'John'}

但是,我遇到了一个错误:

ReferenceError: obj is not defined

参考:Exploring.JS - ES6 [ #10 - Destructuring ]

【问题讨论】:

  • 你想要一个新对象还是只需要两个变量?
  • 新对象@NinaScholz。我知道,如果只是使用变量我不使用let obj = {},但我只是使用let {id : iduser, user : username} = parameter

标签: javascript object ecmascript-6


【解决方案1】:

用分号结束let obj = {} 行解决了这个问题:

let parameter = {id : 10, username : 'john'};
let obj = {};
({id : obj.iduser, username : obj.user} = parameter);
console.log(obj);

【讨论】:

  • 为什么要投反对票?这是对的 !谢谢 :3 但我不明白,为什么没有分号会毁了一切?我觉得 JS 不用分号就可以了?
  • 在某些极端情况下,浏览器需要分号才能正确解释代码。
【解决方案2】:

您可以先 destuct 并为新对象使用速记属性。

let parameter = { id : 10, username : 'john' },
    { id: iduser, username: user } = parameter,
    obj = { iduser, user };
    
console.log(obj);

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2021-11-07
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多