gpt4 book ai didi

list - Dart:根据条件将列表拆分为两个子列表

转载 作者:行者123 更新时间:2023-12-03 02:44:46 25 4
gpt4 key购买 nike

有什么方法可以根据以下条件在 dart 中拆分列表:

[1, 2, 3, 4, 5, 6, 7, 8] (A sample list)

After splitting it based on i % 2 == 0 condition,
it would generate the following two lists:
1) [1, 3, 5, 7]
2) [2, 4, 6, 8]
我知道我可以简单地编写一个循环来遍历所有元素并检查条件以创建两个子列表。但是在 Dart 中有更短的功能方式吗?
提前致谢!

最佳答案

如果您想经常这样做,那么在您的项目中创建一个可以执行您想要的扩展方法可能是个好主意。我提出了以下应该以通用且有效的方式工作的设计:

void main() {
final s_list = [1, 2, 3, 4, 5, 6, 7, 8];
final match = s_list.splitMatch((element) => element % 2 == 0);

print(match.matched); // [2, 4, 6, 8]
print(match.unmatched); // [1, 3, 5, 7]
}

extension SplitMatch<T> on List<T> {
ListMatch<T> splitMatch(bool Function(T element) matchFunction) {
final listMatch = ListMatch<T>();

for (final element in this) {
if (matchFunction(element)) {
listMatch.matched.add(element);
} else {
listMatch.unmatched.add(element);
}
}

return listMatch;
}
}

class ListMatch<T> {
List<T> matched = <T>[];
List<T> unmatched = <T>[];
}

关于list - Dart:根据条件将列表拆分为两个子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63372697/

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