You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据键在Map列表中查找目标Map?

从Map列表中筛选特定键值的目标Map

首先修正你代码里的语法错误:第三个Map的'letter': 'c,缺少闭合单引号,应改为'letter': 'c'。

方法一:获取第一个匹配的Map(推荐用于唯一匹配场景)

使用firstWhere方法可以直接定位到第一个符合条件的Map,适合确定目标唯一的场景:

void main() {
  List<Map<String, String>> letters = const [
    {
      'letter': 'a',
      'name' : 'ddd',
      'video' : 'ss',
    },
    {
      'letter': 'b',
      'name' : 'ddd',
      'video' : 'ss',
    },
    {
      'letter': 'c',
      'name' : 'ddd',
      'video' : 'ss',
    },
  ];

  // 筛选letter为'a'的Map,无匹配时返回空Map避免报错
  Map<String, String> targetMap = letters.firstWhere(
    (map) => map['letter'] == 'a',
    orElse: () => {},
  );

  // 提取视频信息
  String? video = targetMap['video'];
  print(video); // 输出: ss
}

注意:如果没有匹配项且未设置orElse,会抛出StateError,所以建议加上orElse处理边界情况。

方法二:获取所有匹配的Map(用于多匹配场景)

如果列表中可能存在多个符合条件的Map,使用where方法过滤后转成列表:

void main() {
  List<Map<String, String>> letters = const [
    // 省略列表内容
  ];

  // 筛选所有letter为'a'的Map
  List<Map<String, String>> targetMaps = letters.where((map) => map['letter'] == 'a').toList();

  // 遍历提取每个Map的视频信息
  for (var map in targetMaps) {
    print(map['video']);
  }
}

内容的提问来源于stack exchange,提问作者Terminator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:41:42