【问题标题】:How to merge maps by over writing null value in dart?如何通过在飞镖中覆盖空值来合并地图?
【发布时间】:2021-05-07 19:44:03
【问题描述】:

例如,我有两张地图:

var map1 = {"a":"hello", "b":null};
var map2 = {"a":null, "b":"world"};

我想要的结果是:

{"a":"hello", "b":"world"}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:
    map1.removeWhere((_, value) => value == null);
    map2.removeWhere((_, value) => value == null);
    final combinedMap = {...cleanMap1, ...cleanMap2};
    

    【讨论】:

    • 这并不完全有效。所以我稍微修改了一下,效果很好。 map1.removeWhere((_, value) => value == null); map2.removeWhere((_, value) => value == null); final combinedMap = {...map1, ...map2};
    • 你是对的,removeWhere 方法修改了现有的地图,而不是返回一个新的。我现在更新了我的答案。
    【解决方案2】:

    您可以遍历初始化为 map1 的合并中的每个 (key, value) 对,如果它不为 null,则用 map2 中的相应值替换该值。

    var map1 = {"a":"hello", "b":null};
    var map2 = {"a":null, "b":"world"};
    var merged = map1;
    
    for (const [key, value] of Object.entries(map2)) {
      if (value !== null){
        merged[key] = value;
    }};
    
    console.log(merged);
    

    【讨论】:

    • 刚刚意识到问题是用 dart 语言写的,但我的答案是用 javascript 写的。您可以轻松地转换它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2020-05-15
    • 2023-01-09
    相关资源
    最近更新 更多