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

Dart列表匹配需求实现及RangeError(index)错误修复

Dart列表处理错误修复与需求实现

问题背景

现有两个列表list1和list2,需求是生成list3:

  • list3首先包含list1的全部元素
  • 把list2中没在list1的num字段出现过的元素,以{"num": 对应值, "name": "z"}的格式追加到list3末尾

原运行代码抛出RangeError (index): Index out of range: index should be less than 7: 7错误,且代码逻辑完全不符合需求。

错误原因

  1. 循环越界:原代码for循环条件写的是i <= list2.length,list2长度为7,合法索引是0到6,当i=7时访问list2[i]必然触发索引越界,正确条件应为i < list2.length
  2. 逻辑偏离需求:原代码会重复添加list1中匹配list2的元素,且无论是否匹配都追加带"Z"的元素,完全不符合“先保留list1全部元素,再追加list2中未匹配项”的要求

正确代码实现

先提取list1中所有num值存入集合(提升查询效率),再按需求构建list3:

void main() {
  List list1 = [
    {"num": 1, "name": "a"},
    {"num": 2, "name": "b"},
    {"num": 2, "name": "b"},
    {"num": 3, "name": "c"},
    {"num": 3, "name": "c"},
    {"num": 4, "name": "d"},
    {"num": 5, "name": "e"},
    {"num": 6, "name": "f"},
    {"num": 6, "name": "f"},
    {"num": 7, "name": "g"},
    {"num": 8, "name": "h"},
    {"num": 9, "name": "i"},
    {"num": 10, "name": "j"},
    {"num": 10, "name": "j"},
  ];

  List list2 = [1, 3, 10, 30, 40, 50, 60];

  // 步骤1:初始化list3,复制list1所有元素
  List list3 = [...list1];

  // 步骤2:提取list1中所有num值到集合,用于快速判断是否存在
  Set<int> existingNums = list1.map((item) => item["num"] as int).toSet();

  // 步骤3:遍历list2,筛选出未匹配的元素并追加到list3
  for (int num in list2) {
    if (!existingNums.contains(num)) {
      list3.add({"num": num, "name": "z"});
    }
  }

  print(list3);
}

运行结果

输出完全符合预期:

[
    {"num": 1, "name": "a"},
    {"num": 2, "name": "b"},
    {"num": 2, "name": "b"},
    {"num": 3, "name": "c"},
    {"num": 3, "name": "c"},
    {"num": 4, "name": "d"},
    {"num": 5, "name": "e"},
    {"num": 6, "name": "f"},
    {"num": 6, "name": "f"},
    {"num": 7, "name": "g"},
    {"num": 8, "name": "h"},
    {"num": 9, "name": "i"},
    {"num": 10, "name": "j"},
    {"num": 10, "name": "j"},
    {"num": 30, "name": "z"},
    {"num": 40, "name": "z"},
    {"num": 50, "name": "z"},
    {"num": 60, "name": "z"},
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:47:49