【问题标题】:Get the differences between 2 maps flutter获取 2 张地图颤动之间的差异
【发布时间】:2021-11-10 10:53:13
【问题描述】:

我有 2 张地图,我想将缺失的元素作为列表获取。例如:

var map1= [
   {"name":"name1","email":"name1@email.com"},
   {"name":"name2","email":"name2@email.com"},
   {"name":"name3","email":"name3@email.com"},
 ];
   var map2= [
   {"name":"name1","email":"name1@email.com"},
   {"name":"name2","email":"name2@email.com"},
  
 ];

Output: [{"name":"name3","email":"name3@email.com"}]

我试过这种方法:

var removedElements = map2.where((element) => 
                                      !map1
                                          .contains(element['email']))
                                      .toList();

但它不起作用。任何帮助都会很棒。

【问题讨论】:

  • 请看一下。告诉我,它对你有用吗?
  • 就像一个魅力。谢谢!
  • 不客气,伙计;编码愉快。

标签: arrays list flutter dictionary dart


【解决方案1】:

试试这个

void main() {
  var map1 = [
    {"name": "name1", "email": "name1@email.com"},
    {"name": "name2", "email": "name2@email.com"},
    {"name": "name3", "email": "name3@email.com"},
  ];
  var map2 = [
    {"name": "name1", "email": "name1@email.com"},
    {"name": "name2", "email": "name2@email.com"},
  ];

  var removedElements = [];
  var k;
  for (var i in map2) {
    for (var j in map1) {
      if (i["email"] != j["email"]) {
        k = j;
      }
    }
     removedElements.add(k);
  }

  print(removedElements.toSet().toList());
}

另一种方法

 var removedElements =
      map2.where((element) {
       for(var i in map1){
         if(i["email"] == element["email"]){
           return false;
         } else{
           return true;
         }
       }
      }).toList();

  print(removedElements);

输出 :[{姓名:name3,电子邮件:name3@email.com}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多