我有两张单子.我想要哪些数据与列表2中的数据不匹配,然后将列表2数据添加到带有num:list2数据和名称"z"的列表3中

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];

  List list3 = [];
  for (int i = 0; i <= list2.length; i++) {
    list1.forEach((data) {
      if (data["num"] == list2[i]) {
        list3.add(data);
      }
    });
    list3.add({"num": list2[i], "name": "Z"});
  }
  print(list3);
}

我想要这样的输出,如 list 3

[
    {"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"},
  ];

推荐答案

只要换i < list2.length元就行了

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];

  List list3 = [];
  final setList1 = Set<int>();
  list1.forEach((data) {
    setList1.add(data['num']);
    list3.add(data);
  });

  for (int i = 0; i < list2.length; i++) {
    if (!setList1.contains(list2[i])) {
      list3.add({"num": list2[i], "name": "Z"});
    }
  }
  print(list3);
}

Flutter相关问答推荐

Flutter 文件拾取器Android SingleInstance模式它返回的文件路径为空

我怎样才能go 掉这个底部导航栏上的白色背景

一个API中有两个不同JSON响应的Flutter 改装问题

在Flutter 中创建自定义形状

Flutter飞溅屏幕即使在修改后仍显示默认徽标和背景色

使用现有Map方法对子类克隆方法的逻辑进行Dart标准化

从future 列表到流列表Flutter Firebase

构建上下文不能跨异步间隙使用

网页浏览器不支持鼠标滚动的行项目

Flutter列顶部和底部出现不必要的边距问题

允许文本小部件在容器之间溢出

如何使Flutter 屏幕无法关闭?

如何在 flutter 中使用带有有效负载数据的重定向来执行 firebase 推送通知.?

Cloud firestore:如何使用 map 对象创建和更新嵌套数组

如何在 flutter 中制作这种类型的扩展瓦片

Flutter 活跃的互联网连接

扫描flutter生成的二维码后如何弹出文本字段值

NoSuchMethodError:方法 '[]' 在 null 上被调用.我的信息流中的错误

为什么这个参数类型不能分配给参数类型?

在Flutter 中将数字转换为印度文字样式