如何解决Dart / Flutter-比较两个List <dynamic>,如果它们具有相同的id值
我有两个List<dynamic>
,我想弄清楚如何检查id
字段中的值是否相同
List list1 = [
{"id": 2,"name": "test1"},{"id": 3,"name": "test3"}
];
List list2 = [
{"id": 2,"name": "test1"}
];
我尝试过此方法,但返回的是假
var isMatch = (list1.toSet().intersection(list2.toSet()).length > 0);
解决方法
您不能像这样进行比较,因为您不能像Boken所说的那样比较动态,您需要为您的对象创建一个类并实现基本搜索,您可以将list2转换为一个集合以使搜索不那么复杂(包含功能)
void main() {
List list1 = [
MyObject(2,"test"),MyObject(3,"test1")
];
List list2 = [
MyObject(4,"test")
];
for(int i=0;i<list1.length;i++){
if(list2.contains(list1[i])){
// do your logic
print(true);
break;
}
}
}
class MyObject{
int id;
String name;
MyObject(int id,String name){
this.id = id;
this.name = name;
}
// redifine == operator
bool operator ==(o) => (o as MyObject).id == this.id;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。