gpt4 book ai didi

flutter - 如何获取Dart列表中不存在的元素?

转载 作者:行者123 更新时间:2023-12-03 04:14:31 25 4
gpt4 key购买 nike

我想从列表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

我该如何实现?

最佳答案

您肯定可以使用==运算符广告@jamesdlin在其评论中建议的方法来实现。

我想介绍equatable包,它对我们的广告来说是覆盖==运算符的,因为我们不必担心哈希码。

您只需要扩展Equatable并将所有变量传递给prop即可,如下代码所示。

class Person extends Equatable {
final String name;

Person(this.name);

@override
List<Object> get props => [name];
}

现在,您可以与对象进行比较,因此您的代码可以使用。

注意:如果使用的是json,请仔细检查equatable软件包并相应地更改代码。

关于flutter - 如何获取Dart列表中不存在的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60822826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com