Ecmascript 6 ES6大括号用于从对象提取并指定给另一个对象

Ecmascript 6 ES6大括号用于从对象提取并指定给另一个对象,ecmascript-6,curly-braces,Ecmascript 6,Curly Braces,我想使用大括号替换此代码: let rUsers = children.map((user) => { let rUser= {}; rUser.firstName = user.firstName; rUser.lastName = user.lastName; rUser.relation = user.patron.relation; return rUser; }); 这就是我所拥有的: let rUsers = children.map

我想使用大括号替换此代码:

let rUsers = children.map((user) => {
    let rUser= {};
    rUser.firstName = user.firstName;
    rUser.lastName = user.lastName;
    rUser.relation = user.patron.relation;
    return rUser;
 });
这就是我所拥有的:

let rUsers = children.map((user) => {
    let rUser = {};
    ({
        firstName: rUser.firstName,
        lastName: rUser.lastName,
        patron.relation: rUser.relation, // I get an error here
    } = user);
    return rUser;
}
除赞助人关系外,其余提取工作

问题:

  • 我应该如何提取user.patron.relation的价值
  • 有没有更简洁的方法来写上面的内容

  • 谢谢

    我发现您的代码有一些问题

  • 用户关系
    ->
    用户
    未定义,不能用作键
  • 在第二个示例中,使用了
    rUser
    ——我想您只需要
    user
  • 我对你想做什么的理解基本上就是创造一个克隆?如果是这样的话,你应该可以这样做

    let rUsers = children.map(user => {
        firstName: user.firstName,
        lastName: user.lastName,
        relation: user.relation
    });
    
    或者,使用
    Object.assign()


    可以像这样使用对象分解:

    const {firstName, lastName, patron: {relation}} = user
    
    relation
    已设置为
    user.patron.relation
    的值

    您可以按如下方式返回所需的对象:

    return {firstName, lastName, relation}
    
    如何提取
    用户.用户.关系的值

    您将使用
    {…用户:{relation:rUser.relation},…}
    作为分解目标

    有没有更简洁的方法来写上面的内容

    如果属性名称不匹配,但在特定情况下,可以通过将参数分解为多个变量来简化:

    const rUsers = children.map(({firstName, lastName, patron: {relation}}) => 
        ({firstName, lastName, relation})
    );
    

    感谢@Bergi回答这两个问题!工作得很好!在属性不能作为参数传递的情况下,如何从一个对象提取特定属性并将其分配给另一个对象?@fab“不能作为参数传递的属性”是什么意思?在上面,我们可以访问数组的map()方法,并将对象属性作为参数传递。如果有一个对象用户:
    let user={firstname:'Aldrin',lastname:'Theo',赞助人:{relation:'party'}}
    ,我们想将
    firstname
    赞助人.relation
    提取到一个对象
    reduceUser
    。你将如何分解它?@fab要么将其分解为
    let
    /
    常量,然后构建对象,要么(使用参数:-P)确定。谢谢@Bergi!
    
    const rUsers = children.map(({firstName, lastName, patron: {relation}}) => 
        ({firstName, lastName, relation})
    );