【问题标题】:Dart check if array of maps contains a specific mapDart 检查地图数组是否包含特定地图
【发布时间】:2021-08-21 16:53:31
【问题描述】:

我想检查一个地图数组是否包含特定的map

void main() {
  List<Map> mapArray = [{"a":1,"b":1}];
  print(mapArray.contains({"a":1,"b":1})); // prints false
}

即使mapArray 数组包含{"a":1,"b":1} 映射,mapArray.contains 函数也会返回 false。 我通过将映射转换为字符串并检查数组是否包含该字符串找到了解决方案。

print(mapArray.map((x)=>x.toString()).contains({"a":1,"b":1}.toString())); // prints true

但是,这看起来并不是最好的解决方案。如果有更好的解决方法,请告诉我。

【问题讨论】:

    标签: dart


    【解决方案1】:

    可以使用DeepCollectionEqualityequals方法:

    import 'package:collection/collection.dart';
    
    void main() {
      List<Map> mapArray = [{"a":1,"b":1}, {"c":25,"d":99}];
      print(mapArray.any((element) => DeepCollectionEquality().equals(element, {"a":1,"b":1})));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2022-01-05
      • 2022-11-10
      • 1970-01-01
      • 2012-05-24
      • 2011-01-04
      相关资源
      最近更新 更多