arrays - 从Dart map 迭代和提取键/值的最佳方法?

标签 arrays flutter dart hashmap

GIVEN Map<String, List<String>>其中:

  • 关键是团队代码
  • 该值是玩家名称列表。

  • 何时
    当用户选择一个名称时,我需要通过与玩家列表进行比较来输出团队代码(可能有重复的名称和其他我尚未充分考虑的东西)。
    我确实找到了可行的方法,但是不确定当数据量增加时它是否能正常工作。
    //Team Map Example    
    var teamMap = {
      "TeamFoo": ["Bob", "John", "Jill"],
      "TeamBar": ["Mike", "Fred"]
    };
    
    //Loop Example
    teamMap.forEach((key, value) {
       if (value.indexOf(_lastName) >= 0) {
          teamName = key;
       }
    });
    
    有没有更好的方法来编写此功能以提高速度或可读性?

    最佳答案

    我要做的一项改进是在找到值时停止。如果重复,则您的方法是合适的,因为无论如何您都必须迭代整个 map 。
    如果没有重复,这就是我会怎么做。
    代码:

    String teamCode = teamMap.keys.firstWhere((key) => teamMap[key].contains(_lastName));
    
    
    说明:teamMap.keys =>返回 map 的键列表teamMap[key] =>返回与该键对应的玩家列表
    对于每个键
    检查相应的列表是否包含 _lastName teamMap[key].contains(_lastName)); 但是,要处理重复项,我建议添加“#”,然后添加重复项计数。如果那不适合玩家的名字,那就用你的想象力消除重复。
    让我知道您是否遇到任何错误。
    另外,如果您喜欢常规Map / List / Set方法i'd recommend this page的可视化文档。

    关于arrays - 从Dart map 迭代和提取键/值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62888994/

    相关文章:

    flutter - 使同一行中的另一个小部件可见后如何避免小部件位移?

    dart - 我如何创建列表列表

    javascript - HTML 元素数组未定义

    javascript - 如何将 JavaScript 对象转换为数组

    flutter - 将onTap函数传递给Flutter中的另一个小部件

    annotations - 如何访问 Dart 注释元数据

    dart - Flutter 图像预加载

    javascript - 在 JavaScript 中返回一个数组

    c++ - 插入排序打印错误输出

    ios - Flutter - 如何在 native Swift 代码中调用 channel ?