代码之家  ›  专栏  ›  技术社区  ›  Jose

从数组创建映射,按字段分组。Javascript。矿脉

  •  0
  • Jose  · 技术社区  · 5 年前

    我需要根据字段“day”(一个字符串)对对象列表进行分组。

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

    我把我的单子按字符串“day”分组

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

    错误:类型“{dia:string;imputaciones:ImputacionData[];}[]”缺少类型“Map”中的以下属性


    我也试过这个

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

    错误:类型“{key:string;values:ImputacionData[][];}[]”缺少类型“Map”中的以下属性


    但在任何情况下你都不允许我把结果分配给我的地图。

    如何从数组中创建映射,并按“day”(字符串)字段对其进行分组。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Ori Drori    5 年前

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

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

    如果你需要JS Map 你可以用 _.toPairs() ,并用新映射包装表达式:

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