我有两个List<dynamic>
,我试图弄清楚如何检查id
字段中是否有相同的值
List list1 = [
{"id": 2, "name": "test1"},
{"id": 3, "name": "test3"}
];
List list2 = [
{"id": 2, "name": "test1"}
];
字符集
我试过了,但它返回false
var isMatch = (list1.toSet().intersection(list2.toSet()).length > 0);
型
2条答案
按热度按时间8cdiaqws1#
你可以比较动力学。这很简单。
字符集
然而,这只在
a
有一个函数compareTo
时才有效。所有的原语都有这个函数,所以没有问题。如果你有自定义类,那么你应该自己写一个函数compareTo
。此外,
b
必须与a
是同一个对象。因此,首先检查if (a.runtimeType == b.runtimeType)
是一个很好的做法。在您的情况下,这显然是正确的。cbjzeqam2#
你不能像那样比较,因为你不能像Boken说的那样比较动态,你需要为你的对象创建一个类并实现一个基本的搜索,你可以将list2转换为一个集合,以使搜索不那么复杂(包含函数)
字符集