发布于 2026-01-06 0 阅读
0

你应该知道的十大数组实用方法(Dart)🎯

你应该知道的十大数组实用方法(Dart)🎯

作为我使用Dart进行客户端应用程序开发的一部分,我开始探索如何处理数组/列表类型。除了文档内容详尽之外,我还从StackOverflow社区获得了帮助,并成功实现了所需的功能。

在今天的文章中,我们将探讨 Dart 的“开箱即用”理念,特别是用于处理列表的内置工具。我精心挑选了 10 个你最常用的工具,供你在开发下一个应用时使用。我还准备了示例代码片段,方便你亲自体验 😁

那么,我们开始吧?


1. forEach()

对列表中的每个元素运行一个函数

var fruits = ['banana', 'pineapple', 'watermelon'];
fruits.forEach((fruit) => print(fruit)); // => banana pineapple watermelon
Enter fullscreen mode Exit fullscreen mode

2. map()

对给定列表中的每个元素进行转换后,生成一个新列表。

var mappedFruits = fruits.map((fruit) => 'I love $fruit').toList();
print(mappedFruits); // => ['I love banana', 'I love pineapple', 'I love watermelon']
Enter fullscreen mode Exit fullscreen mode

3. 包含()

检查以确认给定元素是否存在于列表中

var numbers = [1, 3, 2, 5, 4];
print(numbers.contains(2)); // => true
Enter fullscreen mode Exit fullscreen mode

4. sort()

根据提供的排序函数对列表中的元素进行排序

numbers.sort((num1, num2) => num1 - num2); // => [1, 2, 3, 4, 5]
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

9. List.from()

从给定的集合创建一个新列表

var clonedFiboNumbers = List.from(fiboNumbers);
print('Cloned list: $clonedFiboNumbers');
Enter fullscreen mode Exit fullscreen mode

从 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]
Enter fullscreen mode Exit fullscreen mode

结论

希望本文对您有所帮助。如果您是第一次接触 Dart,请阅读我的入门教程以掌握基础知识。本文的示例代码片段可在DartPad上找到。

喜欢就点赞关注我😍,获取更多关于飞镖的内容。

教程到此结束。感谢阅读。

接下来该看看什么

  1. List<E> 类文档
  2. Egghead.io 上的 Dart 屏幕录像

继续阅读:


文章来源:https://dev.to/creativ_bracket/top-10-array-utility-methods-you-should-know-dart-version--3217