Dart map 函数
最后修改日期:2024 年 1 月 28 日
在本文中,我们将介绍如何在 Dart 语言中将 Iterable 的元素映射到一个函数。在我们的示例中,我们使用列表集合。
map
函数返回一个惰性 Iterable
,它通过对 Iterable
的每个元素调用指定的函数来创建。
Dart map 简单示例
下面是一个简单的 map 函数示例。
main.dart
void main() { final vals = [1, 2, 3, 4, 5, 6]; final res = vals.map((e) => e * 5); print(res); print(res.toList()); }
我们有一个整数列表。我们将 map 函数应用于每个元素。该函数是一个 lambda 表达式,它将元素乘以 5。
$ dart main.dart (5, 10, 15, 20, 25, 30) [5, 10, 15, 20, 25, 30]
Dart map 示例 II
在下面的示例中,我们将 map
函数应用于单词列表。
main.dart
void main() { final words = ['sky', 'cloud', 'snow', 'summer', 'cup', 'water']; final wlns = words.map((e) => e.length); print(wlns); }
在该程序中,我们将单词列表转换为单词长度序列。
$ dart main.dart (3, 5, 4, 6, 3, 5)
Dart 索引 map 函数
如果我们想处理元素索引,我们可以使用 collection
库中提供的 mapIndexed
函数。
$ dart pub add collection
我们将库添加到项目中。
main.dart
import 'package:collection/collection.dart'; void main() { final words = ['sky', 'cloud', 'snow', 'summer', 'cup', 'water']; final wlns = words.mapIndexed((idx, word) => "{idx=$idx, len=${word.length}}"); print(wlns); }
我们将列表元素映射到一个字符串的可迭代对象,其中包含索引值和字符串长度。
$ dart main.dart ({idx=0, len=3}, {idx=1, len=5}, {idx=2, len=4}, ...
Dart map 投影
投影是从返回对象中选择特定字段。
main.dart
class User { final String name; final String occupation; final int salary; User(this.name, this.occupation, this.salary); @override String toString() { return "$name|$occupation|$salary"; } } void main() { final users = <User>[ User("John", "Doe", 1230), User("Lucy", "Novak", 670), User("Ben", "Walter", 2050), User("Robin", "Brown", 2300), User("Amy", "Doe", 1250), User("Joe", "Draker", 1190), User("Janet", "Doe", 980), User("Albert", "Novak", 1930), ]; final salaries = users.map((e) => e.salary); print(salaries); }
我们有一个包含三个字段的用户列表:名字、姓氏和薪水。我们选择薪水字段来形成一个新的惰性可迭代对象。
$ dart main.dart (1230, 670, 2050, 2300, 1250, 1190, 980, 1930)
来源
在本文中,我们已经对列表集合的元素调用了 map
函数。
作者
列出 所有 Dart 教程。