首页 > 解决方案 > array.find 返回的对象的解构

问题描述

我有一个数组消息

[{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),
}));

标签: javascriptarrays

解决方案


您可以解构名字、姓氏和测试,然后在映射过程中插入这些被破坏的参数,如下所示:

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);


推荐阅读