首页 > 解决方案 > 通过键合并对象的映射和数组

问题描述

我有下一张地图:

 const filter = new Map();

  filter.set('a1', {
    Day: 55,
    Type: 1,
  });

  filter.set('a2', {
    Day: 2,
    Type: 3,
  });

下一个数组:

Data = [
    {
      points: 1,
      event: 'a1',
    },
    {
      points: 2,
      event: 'a2',
    },
  ]

我是 JS 的新手,所以我不清楚,如何通过event参数合并这些?预期的输出应该是 Map:

   result = ['a1',
    {
      points: 1,
      Day: 55,
      Type: 1,
    }],
    ['a2',
    {
      points: 2,
      Day: 2,
      Type: 3,
    }],

标签: javascriptarrays

解决方案


你不需要reduce这里。更好地使用 带有 es6 扩展运算符的map...进行合并,

const filter = new Map();

filter.set('a1', {
  Day: 55,
  Type: 1,
});

filter.set('a2', {
  Day: 2,
  Type: 3,
});

const Data = [{
    points: 1,
    event: 'a1',
  },
  {
    points: 2,
    event: 'a2',
  },
]

const result = Data.map(o => [o.event, {
  points: o.points,
  ...filter.get(o.event)
}]);

console.log(result);


推荐阅读