检查两个列表是否有任何共同的元素

Check if two lists have any element in common

如何从 list2 添加到 list1 个元素,其中 type 键的值不同?

  var list1 = <Map<String, String>>[
    {'id': '123', 'type': 'START', 'location': 'Vienna'},
  ];

  var list2 = <Map<String, String>>[
    {'type': 'START'},
    {'type': 'STOPOVER'},
    {'type': 'DESTINATION'},
    {'type': 'END'}
  ];

所以 list1 最后应该是这样的:

  list1 = <Map<String, String>>[
    {'id': '123', 'type': 'START', 'location': 'Vienna'},
    {'type': 'STOPOVER'},
    {'type': 'DESTINATION'},
    {'type': 'END'}
  ];
list1.addAll(
    list2.where((item) => list1.where((item2) => item['type'] != item2['type']).isNotEmpty)
);

命令式风格:

var result = <Map<String, String>>[];

for (var x2 in list2) {
    final x1s_like_x2 = list1.where((x1) => x1['type'] == x2['type']);
    if (x1s_like_x2.isEmpty) {
        result.add(x2);
    } else {
        result.addAll(x1s_like_x2);
    }
}

然后您将在 result 中获得合并列表。