dart 如何检查Map ==相同的其他map(键和值)

kxe2p93d  于 2023-06-03  发布在  其他
关注(0)|答案(2)|浏览(267)

例如,我有以下两个动态Map,它们具有相同的键和值:

Map a = {
'name':'alex',
 'products': {'type':'cars'},
 'rate':100,
 'others':['not yet']
};

Map b = {
 'name':'alex',
 'products': {'type':'cars'},
 'rate':100,
 'others':['not yet']
};

当我打电话

print((a==b).toString()); => always print false why ?

如何以正确的方式检查它我需要知道这两个Map是否具有完全相同的键和值。

jdgnovmf

jdgnovmf1#

你可以试试DeepCollectionEquality类in here
示例:

import 'package:collection/collection.dart';

Map a = {
      'name': 'alex',
      'products': {'type': 'cars'},
      'rate': 100,
      'others': ['not yet']
    };

Map b = {
      'name': 'alex',
      'products': {'type': 'cars'},
      'rate': 100,
      'others': ['not yet']
    };

DeepCollectionEquality deepCollectionEquality =
        const DeepCollectionEquality();

print(deepCollectionEquality.equals(a, b));
jm81lzqq

jm81lzqq2#

为了检查两个(或多个)Map是否相等,您可能需要(按照给定的顺序)执行以下操作
1.应该具有相同的长度(如果所有Map的长度为null,则返回true)
1.遍历任何Map的键列表,并检查其他Map中是否存在相同的键值对,如果它们之间的“and”操作在任何时候都为false,则返回false
1.最后返回true(只有当第2步中的所有and操作都返回true时才返回此值)
或者,您可以使用https://api.flutter.dev/flutter/foundation/mapEquals.html包。但唯一的缺点是它只接受两张Map作为输入

相关问题