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

如何从Dart的Map中筛选值为true和false/null的键列表?

实现Map键的分类筛选(Dart/Flutter)

你可以通过遍历Map的键值对条目,根据值的状态判断,将对应键分别存入两个列表,具体实现如下:

基础遍历写法(适合新手理解)

// 初始化两个空列表,分别存放符合条件的键
List<int> trueKeys = [];
List<int> falseOrNullKeys = [];

// 遍历weekdaymap的所有键值对条目
for (var entry in weekdaymap.entries) {
  // 判断当前值是否为true
  if (entry.value == true) {
    trueKeys.add(entry.key);
  } else {
    // 其余情况(值为false或null)存入另一个列表
    falseOrNullKeys.add(entry.key);
  }
}

代码说明

  • weekdaymap.entries:获取Map中所有键值对,每个条目是包含key(键)和value(值)的MapEntry对象
  • 条件entry.value == true:精准匹配值为true的情况,剩下的自动覆盖false和null的场景
  • 最终trueKeys就是所有值为true的键的列表,falseOrNullKeys则是值为false或null的键的列表

简洁集合操作写法

如果你想更简洁,也可以用Dart的链式集合操作:

List<int> trueKeys = weekdaymap.entries
    .where((entry) => entry.value == true)
    .map((entry) => entry.key)
    .toList();

List<int> falseOrNullKeys = weekdaymap.entries
    .where((entry) => entry.value != true)
    .map((entry) => entry.key)
    .toList();
  • where:过滤出符合条件的键值对条目
  • map:从条目中提取键
  • toList:将结果转换为列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:45:10