如何根据值合并两个对象数组
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);
如您所见,我有两个对象:
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);