比较 2 个不同的列表并过滤第一个列表

Compare 2 different list and filter the first list

正在尝试实现以下结果,但无法找到正确的过程或代码来解决它。请找到任何解决方案。

List ids = ['2330', '1111'];
List users = [{"id": ['1234','2330'], "name": "username1"}, {"id":['1111','2330'], "name": "username2"},{"id": ['3455','2331'], "name": "username3"}];
# I want the result to be like
List selectedUsers = [{"id": ['1234','2330'], "name": "username1"}, {"id":['1111','2330'], "name": "username2"}];

我试过了...

 List selectedUsers = users.where((u) => ids.contains(u["id"])).toList();

但这不起作用...

 Result: []

我做错了什么?

提前致谢!

您的代码有点错误。您正在检查 ids 是否包含整个列表 u["id"].

试试这个:

List selectedUsers = users.where((u) => ids.any((id) => u["id"].contains(id))).toList();

ids.any(...) 将函数作为测试,如果可迭代 ID 的任何元素通过测试,return 为真。在这里,如果 ids 中的任何 id 出现在 u["id"] 中,您的测试应该 return 为真。现在使用这整个东西作为你的过滤器,你会得到想要的结果:

[{id: [1234, 2330], name: username1}, {id: [1111, 2330], name: username2}]