Dart 检查地图数组是否包含特定地图

tri*_*zin 0 dart

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

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

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

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

然而,这看起来并不是最好的解决方案。请告诉我是否有更好的解决方法来解决此问题。

小智 5

您可以使用equals以下方法DeepCollectionEquality

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})));
}
Run Code Online (Sandbox Code Playgroud)