如何根据值合并两个对象数组

How to merge two arrays of objects based on a value

如您所见,我有两个对象:

let arrObj1 = [{"ID":5045,"unread":1},{"ID":5058,"unread":2}];
let arrObj2 = [{"ID":3006,"id":"818", "From":"user1@mail.com"},{"ID":5045,"id":"2503", "From":"user2@mail.com"},{"ID":5058,"id":"2509", "From":"user3@mail.com"}];

我想合并这两个对象数组并希望结果如下:

result = [{"ID":3006,"id":"818", "From":"user1@mail.com", "unread":0},{"ID":5045,"id":"2503", "From":"user2@mail.com", "unread":1},{"ID":5058,"id":"2509", "From":"user3@mail.com", "unread":2}]

如果在 arrObj1 中找不到来自 arrObj2 的 ID,请添加“未读”:0 谁能帮帮我

非常感谢

const 
  arrObj1 = [{"ID":5045,"unread":1},{"ID":5058,"unread":2}],
  arrObj2 = [{"ID":3006,"id":"818", "From":"user1@mail.com"},{"ID":5045,"id":"2503", "From":"user2@mail.com"},{"ID":5058,"id":"2509", "From":"user3@mail.com"}];

// get map of ID as key and unread as value from arrObj1
const IdUnreadMap = arrObj1.reduce((map, { ID, unread }) => 
  map.set(ID, unread)
, new Map);
// iterate over arrObj2 and set unread from map or 0
const merged = arrObj2.map(item => {
  const unread = IdUnreadMap.get(item.ID) || 0;
  return { ...item, unread };
});

console.log(merged);