You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中对List执行flatMap操作?

在Dart中实现List的flatMap操作

嘿,我懂你的困惑!Dart的List确实没有直接提供flatMap方法,但别担心,我们有完美的替代方案——expand方法,它的作用和flatMap完全一致。

你原来尝试的代码:

[1,2,3].flatMap((e) => [e, e+1])

只需要把flatMap换成expand,再转成List(因为expand返回的是Iterable)就可以正常运行了:

final result = [1,2,3].expand((e) => [e, e+1]).toList();
// 运行后得到结果:[1, 2, 2, 3, 3, 4]

为什么expand能替代flatMap?

expand方法会遍历原List的每个元素,将每个元素通过你传入的函数转换成一个新的Iterable,然后自动把所有这些小Iterable里的元素拼接成一个大的Iterable,这正是flatMap“映射后扁平化”的核心逻辑。

如果你偏爱flatMap这个名字

也可以通过扩展方法给Iterable(List属于Iterable)添加一个flatMap方法,这样就能按你习惯的方式调用了:

extension FlatMapExtension<T> on Iterable<T> {
  Iterable<R> flatMap<R>(Iterable<R> Function(T element) mapper) => expand(mapper);
}

// 之后就能这样用:
final result = [1,2,3].flatMap((e) => [e, e+1]).toList();

内容的提问来源于stack exchange,提问作者bartektartanus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:30:11