通过列表(集)值之一在列表(集(集))的映射中查找关键字



Map<String, Set<Type>>中,我想找到包含Set的键,该Set包含给定的Type(Set的值(。

拥有:

final map = <String, Set<Type>>{
'key1': <Type>{
Type1,
Type2,
},
'key2': <Type>{
Type3,
Type4,
},
}

想要:

find(map, Type3); // 'key2'

您可以将Map#条目与firstWhere(或package:collection中的firstWhereOrNull(一起使用

import 'package:collection/collection.dart';
typedef Type1 = int;
typedef Type2 = double;
typedef Type3 = String;
typedef Type4 = Object;
void main() {
final map = <String, Set<Type>>{
'key1': <Type>{
Type1,
Type2,
},
'key2': <Type>{
Type3,
Type4,
},
};
final search = Type3;
print(
map.entries.firstWhereOrNull(
(entry) => entry.value.contains(search),
)?.key,
);
}

最新更新