我想检查地图数组是否包含特定的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)
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |