在 Angular 中使用带有 Map 函数的 2 个数组创建新数组

Create new array using 2 arrays with Map function in Angular

是否有从 2 个数组创建新数组的有效方法?

var employees1 = [
{ id: 11, name: 'joe' },
{ id: 12, name: 'mike' },
{ id: 13, name: 'mary' },
{ id: 14, name: 'anne' }
];

var employees2 = [
{ id: 11, message: 'test1' },
{ id: 12, message: 'test2' },
{ id: 13, message: 'test3' },
{ id: 14, message: 'test4' }
];

迭代 employees1 数组并获取 'message' 以匹配来自 employees2 的 ID。生成新数组:

var employees3 = [
{ id: 11, name: 'joe', message: 'test1' },
{ id: 12, name: 'mike', message: 'test2' },
{ id: 13, name: 'mary', message: 'test3' },
{ id: 14, name: 'anne', message: 'test4' }
];

这可以使用地图功能吗?或者使用建议的标准 foreach?

遍历第一个数组,在第二个数组中搜索元素,最后将它们推入新数组,如下图所示:

var employees3 = [];

employees1.forEach(emp1 => {
  const findEmp = employees2.find(emp2 => emp2.id === emp1.id);
  if (findEmp) {
    employees3.push({
      ...emp1,
      ...findEmp
    });
  }
});

console.log(employees3);

您可以使用 Array#mapArray#find 来获得所需的输出。我附上示例代码:

var employees3 = employees1.map(emp => ({ 
  ...emp, 
  ...(employees2.find(item => item.id === emp.id) ?? {}) 
}))