arrays - 获取 2 张地图颤动之间的差异
问题描述
我有 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();
但它不起作用。任何帮助都会很棒。
解决方案
试试这个
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}]
推荐阅读
- c# - 如何访问 ASP.NET ITemplate 容器属性
- jenkins - 在哪里可以找到 Jenkins 的 `input()` 方法的源代码?
- java - 如何使用 orika 映射列表地图?
- python - ModuleNotFoundError:没有名为“future.builtins”的模块;“未来”不是一个包
- elasticsearch - Elasticsearch 中的嵌套查询是如何工作的?
- r - 导入名称中包含常用字符的数据集的最快方法是什么?
- javascript - tablesorterPager 不是函数
- python - 如何在循环功能中自动打开新的 selenium chrome 驱动程序会话以进行自动填充(使用新的代理和用户代理)
- python - 导入 statsmodel 时遇到问题
- excel-formula - 使用 SUMPRODUCT 公式 R1C1 中的变量进行偏移