我有一个消息数组
[{id:1, userId:'123',test:'hello'},{id:2, userId:'124',test:'world'}]
还有另一个数组成员
[{id:'123',firstName:'sam',lastName:'rest', email:'something@a.com'},
{id:'124',firstName:'tim',lastName:'best', email:'abc@a.com'}]
我想返回数组下面
[{messageId:1, userId:'123',test:'hello', fullName:'sam rest', email:'something@a.com'},
{messageId:2, userId:'124',test:'world', fullName:'sam best', email:'abc@a.com'}]
我尝试在第一个数组上进行映射,然后在第二个数组上进行查找,但我无法弄清楚如何修改所找到的结果项的键。下面是我要去的地方
return messages.map((message) => ({
...message,
messageId: message.id,
...members.find((member) => member.id === message.userId),
}));
最佳答案
您可以解构名字、姓氏和测试,然后在您的映射中插入这些解构的参数,如下所示:
const messages = [{id:1, userId:'123',test:'hello'},{id:2, userId:'124',test:'world'}];
const members = [{id:'123',firstName:'sam',lastName:'rest', email:'something@a.com'},
{id:'124',firstName:'tim',lastName:'best', email:'abc@a.com'}];
const merged = messages.map(message => {
const { firstName, lastName, email, id } = members.find(({ id }) => id === message.userId);
const fullName = `${firstName} ${lastName}`;
return {
messageId: message.id,
userId: id,
test: message.test,
fullName,
email
}
});
console.log(merged);
关于javascript - array.find 返回的对象的解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59014117/