如何检查两个地图在飞镖中是否相等

Blo*_*oss 10 dart

是否可以检查两个地图是否相等java equals

void main() {
  Map map1 = {'size': 38, 'color': 'red'};
  Map map2 = {'size': 38, 'color': 'red'};

  if(map1== map2){//both keys and values
    print('yes');
  }else{
    print('no');
  }
}
Run Code Online (Sandbox Code Playgroud)

Blo*_*oss 14

我发现mapEquals.

import 'package:flutter/foundation.dart';

void main() {
  Map map1 = {'size': 38, 'color': 'red'};
  Map map2 = {'size': 38, 'color': 'red'};


  if(mapEquals(map1, map2)){
    print('yes');
  }else{
    print('no');
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果地图包含其他地图,则此方法将不起作用。换句话说,这只是第一级比较。 (5认同)

小智 8

使用MapEquality().equals(Object a, Object b). 它将返回truefalse

import 'package:collection/equality.dart';

MapEquality().equals(map1, map2)
Run Code Online (Sandbox Code Playgroud)

  • 它不比较嵌套地图。`DeepCollectionEquality` 确实如此。 (6认同)

小智 7

对于 Flutter,如果您有一个嵌套的 Map 并且您需要在键和值映射方面检查它与另一个嵌套对象的相等性,请使用:

import 'package:collection/collection.dart';

if(DeepCollectionEquality().equals(map1, map2)) {
  print('Maps are equal');
} else {
  print('Maps are not equal');
}
Run Code Online (Sandbox Code Playgroud)


jam*_*lin 6

对于非 Flutter Dart 代码,package:quiver提供了一个mapsEqual比较 s 的函数(以及s 和sMap的类似函数)。ListSet