javascript - array.find 返回的对象的解构

标签 javascript arrays

我有一个消息数组

[{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/

相关文章:

JavaScript如何检查json中是否缺少属性

javascript - CKEDITOR 如何禁用元素信息对话框

javascript - D3.js,需要d3.js中的点击事件

javascript - 在鼠标悬停时显示全尺寸图像

java - 合并两个数组并短合并数组

javascript - 包含jsp中某个文件夹下的所有js文件

java - 为什么在这里使用 split 会产生不同的数组大小?

javascript - jQuery 'unique' 在 Safari 中不返回实际的唯一值

java - 使用流计算二维数组中的特定字符

c++ - 我可以使用动态数组作为 C++ 模板类型名吗?