【问题标题】:Compare 2 different list and filter the first list比较 2 个不同的列表并过滤第一个列表
【发布时间】:2021-04-26 06:09:55
【问题描述】:

试图达到以下结果,但无法找到正确的进程或代码来解决它。请找到任何解决方案。

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: []

我做错了什么?

提前致谢!

【问题讨论】:

  • 您想要实现的目标非常令人困惑,需要更多详细信息
  • C 我想比较 2 个列表并过滤匹配项

标签: flutter dart mobile


【解决方案1】:

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

试试这个:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多