我想用花括号替换这段代码:
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;
}
除了patron.relation,其余的提取工作。
问题:
谢谢!
答案 0 :(得分:1)
您可以像这样使用对象解构:
const {firstName, lastName, patron: {relation}} = user
并且relation
已设置为user.patron.relation
的值。
您可以返回您想要的对象:
return {firstName, lastName, relation}
答案 1 :(得分:1)
我应该如何提取
user.patron.relation
的价值?
您可以使用{ … patron: {relation: rUser.relation}, … }
作为解构目标。
是否有一种更为简洁的方式来编写上述内容?
如果属性名称与there's not much you can do不匹配,但在您的特定情况下,您可以通过将参数解构为多个变量来简化:
const rUsers = children.map(({firstName, lastName, patron: {relation}}) =>
({firstName, lastName, relation})
);
答案 2 :(得分:0)
我发现你的代码有些问题。
patron.relation
- > patron
未定义,且无法用作密钥。rUser
- 我想您只想user
。我对你尝试做什么的理解基本上创造了一个克隆?如果是这样,你应该可以做这样的事情。
let rUsers = children.map(user => {
firstName: user.firstName,
lastName: user.lastName,
relation: user.relation
});
或者,使用Object.assign()
let rUsers = children.map(user => Object.assign({}, user));