创建地图以减少。使用Javascript

时间:2018-05-09 09:11:45

标签: javascript

我有一个“ImputacionData”的结果,并且通过减少它我将它与对象的属性分组:

this.imputacionesDatas = data;
this.imputacionesAndAusencias = this.imputacionesDatas.reduce(function (r, a) {
        r[a.empleadoId] = r[a.empleadoId] || [];
        r[a.empleadoId].push(a);
        return r;
    }, Object.create(null));

我不知道如何处理结果的问题需要将其放在Map中才能在屏幕上处理这些数据并能够绘制它们。

我不知道如何将“reduce”的结果放在:

Map <number, Array <ImputacionData >>;

2 个答案:

答案 0 :(得分:2)

您可以使用Object.entries获取数组中的键和值。

this.imputacionesAndAusencias = Object.entries(this.imputacionesDatas.reduce(function (r, a) {
    r[a.empleadoId] = r[a.empleadoId] || [];
    r[a.empleadoId].push(a);
    return r;
}, Object.create(null)));

如果您想获得Map,则可以将地图作为返回值。

this.imputacionesAndAusencias = this.imputacionesDatas.reduce(function (map, object) {
    if (!map.has(object.empleadoId)) {
        return map.set(object.empleadoId, [object]);
    }
    map.get(object.empleadoId).push(object);
    return map;
}, new Map);

答案 1 :(得分:0)

您可以将累加器的初始值设置为new Map(),然后使用Map方法设置其值。

&#13;
&#13;
const input = [{
  empleadoId: 5
}, {
  empleadoId: 5
}, {
  empleadoId: 6
}];
const output = input.reduce((map, item) => {
  const { empleadoId } = item;
  if (map.has(empleadoId)) map.get(empleadoId).push(item);
  else map.set(empleadoId, [item]);
  return map;
}, new Map());
console.log(...output);
&#13;
&#13;
&#13;