如何从Map中提取偶数键?现有代码返回全部键求修正
问题修正:提取Map中的偶数键
你的代码有两个关键问题导致返回所有键:
if语句末尾的多余分号
你在if(n / 2 == 0);后面加了分号,这会让if的条件判断成为一个空语句,后续的evenNum.add(n);会不受条件限制直接执行,所以所有键都被添加到数组里。偶数判断逻辑错误
n / 2 == 0的判断逻辑不对,比如偶数2除以2结果是1,并不等于0,这个条件永远不会成立。正确的偶数判断应该用取模运算%,判断数值除以2的余数是否为0,也就是n % 2 == 0。
修正后的代码如下:
void main() { final evenNum = []; final testMap = <int, String>{ 1: 'Text', 2: 'Text', 3: 'Text', 4: 'Text', 5: 'Text', 6: 'Text', }; for (var n in testMap.keys) { if (n % 2 == 0) { // 移除分号,修正判断逻辑 evenNum.add(n); } } print(evenNum); // 输出: [2, 4, 6] }
另外,如果你想让代码更简洁,也可以用Dart的集合推导式一行完成:
void main() { final testMap = <int, String>{ 1: 'Text', 2: 'Text', 3: 'Text', 4: 'Text', 5: 'Text', 6: 'Text', }; final evenNum = testMap.keys.where((n) => n % 2 == 0).toList(); print(evenNum); // 输出: [2, 4, 6] }
内容的提问来源于stack exchange,提问作者Verc
相关产品推荐
相关产品推荐

