如何从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
相关产品推荐
相关产品推荐

