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

Dart中如何遍历键不固定的嵌套Map获取所有value值

遍历取值方法

你当前的数据是两层嵌套结构:外层是List,List内的每个元素是键名不固定的Map,Map的value才是存储了目标字段的对象,所以没法用固定key直接取值,多遍历一层Map的所有键值对即可。

基础循环实现

直接用你熟悉的for-in写法就行,不需要额外依赖:

List<Map<String, dynamic>> list = [
  {
    '1': {
      'value': 'Value number one',
    },
    '2': {
      'value': 'Value number two',
    },
  }
];

List<String> result = [];
// 第一层遍历外层List
for (var item in list) {
  // 第二层遍历当前Map的所有值,不需要关心key是什么
  for (var innerObj in item.values) {
    result.add(innerObj['value']);
  }
}

// 最终result就是 ['Value number one', 'Value number two']

简洁写法(链式调用)

如果习惯用函数式写法,可以用expand扁平化处理,代码更短:

final result = list
    .expand((element) => element.values)
    .map((innerObj) => innerObj['value'] as String)
    .toList();

核心逻辑就是:遇到键名不固定的Map,不要硬编码key去取,直接遍历它的.values(只需要值不需要key时)或者.entries(需要同时拿key和值时)属性,就能拿到所有子元素。如果后续遇到更深的嵌套,按这个逻辑逐层往下遍历即可。

提示:如果数据可能存在空值、或者部分内层对象没有value字段,取值时记得加空安全判断,比如用innerObj?['value']避免运行时报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:42:22