我可以在Dart中映射列表:
[1,2,3].map((e) => e + 1)
Run Code Online (Sandbox Code Playgroud)
但是我该如何flatMap这个列表呢?下面的代码不起作用.
[1,2,3].flatMap((e) => [e, e+1])
Run Code Online (Sandbox Code Playgroud)
bar*_*nus 24
expand 方法相当于Dart中的flatMap.
[1,2,3].expand((e) => [e, e+1])
Run Code Online (Sandbox Code Playgroud)
更有趣的是,返回Iterable是懒惰的,并且每次迭代时都会调用每个元素的函数.
Sur*_*gch 15
来自 Swift,flatMap似乎与所需的 OP 含义略有不同。这是一个补充答案。
给定以下二维列表:
final list = [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]];
Run Code Online (Sandbox Code Playgroud)
您可以将其转换为一维可迭代对象,如下所示:
final flattened = list.expand((element) => element);
// (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)
Run Code Online (Sandbox Code Playgroud)
或者通过附加到列表toList:
final flattened = list.expand((element) => element).toList();
// [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |