【发布时间】:2020-03-23 23:12:06
【问题描述】:
我想过滤列表 A 中不存在于列表 B 中的所有对象。如何在 Dart 中执行此操作?
List<MyModel> A = await _repository.myAPI();
List<MyModel> B = await _repository.myAPI();
List<FavoriteM> C = A.take(2).toList();
A.removeWhere((MyModel elem) => B.contains(elem)); // this Doesn't work
A.removeWhere((MyModel elem) => C.contains(elem)); // this works because List C are made from A;
这里的问题是列表 A 和 B 是不同的实例,即使它们都是同一个类的实例,但 Dart 仍然认为它们是不同的。 我的最终目标是:
List<MyModel> A = [obj1, obj2, obj3, obj4];
List<MyModel> B = [obj1, obj3];
A = [obj2, obj4]; // i want List A to have only the elements that doesn't exist in List B
我如何做到这一点?
【问题讨论】:
-
您的意思是
A.removeWhere(...)?目前尚不清楚为什么这不起作用。列表A和B当然是不同的实例(否则A中不存在于B中的所有对象将是空列表)。你的意思是 elements 都是唯一的实例吗?如果是这样,则覆盖MyModel.operator ==。 -
@jamesdlin 是的,我的意思是
A.removeWhere(...)我编辑了我的问题。我怎样才能覆盖MyModel.operator ==?