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;
}
除赞助人关系外,其余提取工作
问题:
谢谢 我发现您的代码有一些问题
用户关系
->用户
未定义,不能用作键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})
);