通过数组创建地图,并按字段分组。 Javascript。洛达

时间:2019-02-20 06:34:40

标签: javascript lodash

我需要根据字段“ day”将对象列表分组,该字段是一个字符串。

 diaImputaciones: Map<String, Array<ImputacionData>>;

我将列表按字符串“ day”分组

 _.chain(parte.imputacionesTarifaBase)
        .groupBy("dia")
        .map((imputaciones, dia) => ({ dia, imputaciones }))
        .value();

错误:输入'{dia:string; imputaciones:ImputacionData []; } []'缺少“地图”类型的以下属性


我也尝试过这个

 _.map(_.groupBy(parte.imputacionesTarifaBase, 'dia'), function (el, key) {
        return {
            key: key,
            values: _.map(el, function (item) {
                return [item];
            })
        };
    });

错误:输入'{键:字符串;值:ImputacionData [] []; } []'缺少“地图”类型的以下属性


但是在任何情况下都不要让我将结果分配给我的地图。

如何通过“天”(字符串)字段将其分组,从而从阵列中创建地图。

1 个答案:

答案 0 :(得分:0)

如果我正确理解,结果应该是键:值对的映射。如果是这样,请使用_.mapValues()而不是_.map()

 _.chain(parte.imputacionesTarifaBase)
        .groupBy("dia")
        .mapValues((imputaciones, dia) => ({ dia, imputaciones }))
        .value();

如果您需要JS Map,则可以使用_.toPairs(),并用新的Map包装表达式:

 new Map(_.chain(parte.imputacionesTarifaBase)
        .groupBy("dia")
        .mapValues((imputaciones, dia) => ({ dia, imputaciones }))
        .toPairs()
        .value());