你应该知道的十大数组实用方法(Dart)🎯
作为我使用Dart进行客户端应用程序开发的一部分,我开始探索如何处理数组/列表类型。除了文档内容详尽之外,我还从StackOverflow社区获得了帮助,并成功实现了所需的功能。
在今天的文章中,我们将探讨 Dart 的“开箱即用”理念,特别是用于处理列表的内置工具。我精心挑选了 10 个你最常用的工具,供你在开发下一个应用时使用。我还准备了示例代码片段,方便你亲自体验 😁
那么,我们开始吧?
1. forEach()
对列表中的每个元素运行一个函数
var fruits = ['banana', 'pineapple', 'watermelon'];
fruits.forEach((fruit) => print(fruit)); // => banana pineapple watermelon
2. map()
对给定列表中的每个元素进行转换后,生成一个新列表。
var mappedFruits = fruits.map((fruit) => 'I love $fruit').toList();
print(mappedFruits); // => ['I love banana', 'I love pineapple', 'I love watermelon']
3. 包含()
检查以确认给定元素是否存在于列表中
var numbers = [1, 3, 2, 5, 4];
print(numbers.contains(2)); // => true
4. sort()
根据提供的排序函数对列表中的元素进行排序
numbers.sort((num1, num2) => num1 - num2); // => [1, 2, 3, 4, 5]
5. reduce(),fold()
使用给定的函数将列表中的元素压缩成单个值。
var sum = numbers.reduce((current, next) => current + next);
print(sum); // => 15
// with fold() you provide an initial value
const initialValue = 10;
var sum2 = numbers.fold(initialValue, (current, next) => current + next);
print(sum2); // => 25
6. 每次()
确认每个元素都满足测试要求。
List<Map<String, dynamic>> users = [
{ "name": 'John', "age": 18 },
{ "name": 'Jane', "age": 21 },
{ "name": 'Mary', "age": 23 },
];
var is18AndOver = users.every((user) => user["age"] >= 18);
print(is18AndOver); // => true
var hasNamesWithJ = users.every((user) => user["name"].startsWith('J'));
print(hasNamesWithJ); // => false
7. where()、firstWhere()、singleWhere()
返回满足测试条件的元素集合
// See #6 for users list
var over21s = users.where((user) => user["age"] > 21);
print(over21s.length); // => 1
var nameJ = users.firstWhere((user) => user["name"].startsWith('J'), orElse: () => null);
print(nameJ); // => {name: John, age: 18}
var under18s = users.singleWhere((user) => user["age"] < 18, orElse: () => null);
print(under18s); // => null
firstWhere()返回列表中的第一个匹配项,而返回列表中只有一个匹配singleWhere()项时的第一个匹配项。
8. take(), skip()
返回一个集合,可以选择包含或跳过某些元素。
var fiboNumbers = [1, 2, 3, 5, 8, 13, 21];
print(fiboNumbers.take(3).toList()); // => [1, 2, 3]
print(fiboNumbers.skip(5).toList()); // => [13, 21]
print(fiboNumbers.take(3).skip(2).take(1).toList()); // => [3]
9. List.from()
从给定的集合创建一个新列表
var clonedFiboNumbers = List.from(fiboNumbers);
print('Cloned list: $clonedFiboNumbers');
从 Dart 2.0 开始, new 实例化对象时关键字是可选的。
10. expand()
将每个元素展开成零个或多个元素
var pairs = [[1, 2], [3, 4]];
var flattened = pairs.expand((pair) => pair).toList();
print('Flattened result: $flattened'); // => [1, 2, 3, 4]
var input = [1, 2, 3];
var duplicated = input.expand((i) => [i, i]).toList();
print(duplicated); // => [1, 1, 2, 2, 3, 3]
结论
希望本文对您有所帮助。如果您是第一次接触 Dart,请阅读我的入门教程以掌握基础知识。本文的示例代码片段可在DartPad上找到。
喜欢就点赞关注我😍,获取更多关于飞镖的内容。
教程到此结束。感谢阅读。
接下来该看看什么
继续阅读:
文章已失效
文章来源:https://dev.to/creativ_bracket/top-10-array-utility-methods-you-should-know-dart-version--3217