【问题标题】:Flutter:How to merge two objects and sum the values of the same key?Flutter:如何合并两个对象并对同一个key的值求和?
【发布时间】:2021-12-04 17:33:43
【问题描述】:

map1 = { "a": 10, "b": 6 }, map2 = { "a": 10, "b": 6, "c": 7, "d": 8 };

Flutter:如何合并两个对象并对同一个key的值求和?

【问题讨论】:

    标签: flutter dictionary merge


    【解决方案1】:

    在最长的地图上执行 forEach 并检查小地图是否包含键,如果包含则使用总和更新值或添加新的。

      map2.forEach((key, value) {
        if (map1.containsKey(key)) {
          map1[key] = value + map1[key]!;
        } else {
          map1[key] = map2[key]!;
        }
      });
    

    map1 将是最终结果。

    【讨论】:

      【解决方案2】:

      所以,如果您想合并/合并这两个地图,请使用此代码this answer

      final firstMap = {"1":"2"};
      final secondMap = {"2":"3"};
      
      final thirdMap = { // here simple adding element to map
      ...firstMap,
      ...secondMap,
      };
      

      但是如果你想求和并合并使用这个:

      map2.forEach((k, v) {
      if (map1.containsKey(k)) { // check if the map has more then 2 values as the 1st one
        map1[k] = v + map1[k]!; // if yes so make the some
      } else {
        map1[k] = map2[k]!; // if no then add the values to map
      }
      });
      

      如遇见 Prajapati asnwer。

      【讨论】:

      • 如果键相同,第一个解决方案不做值的总和。
      • 是的,正如我所说,第一个解决方案可以在地图具有相同长度的情况下工作
      • 不,它不会配对!我们希望结果是这样的“{a: 20, b: 12, c: 7, d: 8}”,第一个解决方案只是合并数据而不做值的总和,所以它只会给出“{a: 10, b: 6, c: 7, d: 8}" 这不是我们想要的!
      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 2019-06-19
      • 2018-07-31
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      相关资源
      最近更新 更多