【问题标题】:compare two json object list and delete the common object from first json object list in dart比较两个 json 对象列表并从 dart 中的第一个 json 对象列表中删除公共对象
【发布时间】:2021-01-06 19:28:31
【问题描述】:

我正在尝试在飞镖中实现以下结果,但找不到任何解决方案

例子

List<Model> a=[{'a': 'Ram1', 'b': 'a+'},{'a': 'Ram2', 'b': 'a-'},{'a': 'Ram3', 'b': 'b-'},{'a': 'Ram4', 'b': 'ab+'},{'a': 'Ram5', 'b': 'ab-'}]
List<Model> b=[{'a': 'Ram1', 'b': 'a+'},{'a': 'Ram2', 'b': 'a-'}]
# I want the result to be like
List<Model> a=[{'a': 'Ram3', 'b': 'b-'}, {'a': 'Ram4', 'b': 'ab+'},{'a': 'Ram5', 'b': 'ab-'}]

【问题讨论】:

  • 你缺少足够的引号来生成这个合法的 Dart 代码。此外,它是“列表”而不是“列表”。你能更新你的代码吗?特别是,我认为它是 List> 一旦你得到所有的引号。 :)
  • 仍然缺少很多引号,例如 [{'a': 'Ram1', 'b': 'a+'}...]
  • 我已经更新了代码

标签: flutter dart mobile


【解决方案1】:
    List<Map<String, dynamic>> a=[{'a': 'Ram1', 'b': 'a+'},{'a': 'Ram2', 'b': 'a-'},{'a': 'Ram3', 'b': 'b-'},{'a': 'Ram4', 'b': 'ab+'},{'a': 'Ram5', 'b': 'ab-'}];
    List<Map<String, dynamic>> b=[{'a': 'Ram1', 'b': 'a+'},{'a': 'Ram2', 'b': 'a-'}];
    List<Map<String, dynamic>> c=List.from(a);

    a.forEach((elementA) {
      b.forEach((elementB) {
        int keysMatched = 0;
        elementB.keys.forEach((key) {
          if(elementA.containsKey(key) && elementA[key] == elementB[key]){
            keysMatched++;
          }
        });
        if(keysMatched == elementB.keys.length){
          c.remove(elementA);
        }
      });
    });

    print(c); // [{a: Ram3, b: b-}, {a: Ram4, b: ab+}, {a: Ram5, b: ab-}]

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 2017-05-17
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多