Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 如何通过Dart中的值获取地图关键点?_Dictionary_Dart_Key - Fatal编程技术网

Dictionary 如何通过Dart中的值获取地图关键点?

Dictionary 如何通过Dart中的值获取地图关键点?,dictionary,dart,key,Dictionary,Dart,Key,在Dart语言中,如何通过值获取贴图键 我有一张地图 { "01": "USD", "17": "GBP", "33": "EUR" } 我需要使用值来获取键。如何执行此操作?如果要对同一数据执行多次此操作,则应创建反向映射,以便执行简单的键查找,而不是重复的线性搜索。下面是一个反转地图的示例(可能有更简单的方法): var usdKey = curr.keys.firstWhere( (k) => curr[k] == 'USD', orElse: () =>

在Dart语言中,如何通过值获取贴图键

我有一张地图

{
  "01": "USD",
  "17": "GBP",
  "33": "EUR"
}

我需要使用值来获取键。如何执行此操作?

如果要对同一数据执行多次此操作,则应创建反向映射,以便执行简单的键查找,而不是重复的线性搜索。下面是一个反转地图的示例(可能有更简单的方法):

var usdKey = curr.keys.firstWhere(
    (k) => curr[k] == 'USD', orElse: () => null);
编辑:是的,反转地图可以是:

var reversed = orig.map((k, v) => MapEntry(v, k));

向吉特岛上的乔·康威致敬。谢谢。

您可以执行以下操作:

var mapper = { 
              '01' : 'USD',
               '17' : 'GBP'     } 

for(var val in mapper.keys){

  switch(mapper[val]){

        case 'USD' : {
                             print('key for ${mapper[val]} is : ' '${val}');  
            }

          break;

        case 'GBP' : {
                             print('key for ${mapper[val]} is : ' '${val}');   
               } 

        }
          }

还有另一种方法(类似于Günter Zöchbauer的答案):


在这段代码中,您将获得MapEntry,它包含键和值,而不是单独变量中的唯一键。它在某些代码中可能很有用

如果有人仍然需要一个解决方案,我写了一篇文章,在
Map
中通过值进行深度搜索(在嵌套映射中搜索)。用法很简单,因为
deepSearchByValue()
是一个扩展方法,所以您只需导入我的库并在地图上调用该方法:

Map map = {1: 'one', 2: 'two', 3: 'three'};

var key = map.keys.firstWhere((k) => map[k] == 'two', orElse: () => null);
print(key);
import'package:deep_collection/deep_collection.dart';
void main(){
印刷品({
“01”:“美元”,
“17”:“英镑”,
“33”:“欧元”,
}.deepSearchByValue((value)=>value='USD');
}

谢谢你的工作。。。顺便问一下,我从哪里可以得到这方面的详细信息?所以我可以学习理解,我可以在我的高级地图项目的后期使用?我不认为这是作为一件事情记录下来的。有
Map
keys
属性和
firstWhere
Iterable
方法,其余的以有意义的方式一起使用它们。,@zoechi由于某种原因未能获取键值!。虽然这段代码可能有助于解决这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,只使用代码的答案往往不太有用。有关更多信息,请参阅:map.entries.firstWhere((element)=>element.value='two',orElse:()=>null).key;这很有用,因为(元素)同时包含键和值,并在测试条件下帮助我使用键和值,因为我有相同的值,但键不同,但我需要这两个条目。因为“firstWhere”忽略了副本。谢谢你,我的回答帮助了你。MapEntry确实有助于可视化数据结构,这对于调试和测试非常有用,但不有效且不可重用。您可以在
开关中硬编码值,这使得维护和重构变得困难。
void main() {

  Map currencies = {
     "01": "USD",
     "17": "GBP",
     "33": "EUR"
  };

  MapEntry entry = currencies.entries.firstWhere((element) => element.value=='GBP', orElse: () => null);

  if(entry != null){
    print('key = ${entry.key}');
    print('value = ${entry.value}');
  }

}
Map map = {1: 'one', 2: 'two', 3: 'three'};

var key = map.keys.firstWhere((k) => map[k] == 'two', orElse: () => null);
print(key);