Flutter Dart中如何按间隔n提取列表元素?
在Dart中实现按间隔提取列表元素的方法
可以通过一个通用的泛型函数来实现需求,函数会保留原列表的第一个元素,之后每隔n个元素提取一次,同时处理各种边界情况:
List<T> extractElements<T>(List<T> list, int n) { // 处理空列表或无效的间隔值(n需大于等于1) if (list.isEmpty || n < 1) return []; final result = <T>[list.first]; // 从索引n开始,每次步长n遍历列表 for (int i = n; i < list.length; i += n) { result.add(list[i]); } return result; }
函数说明
- 使用泛型
<T>,支持处理任意类型的列表(字符串、数字、自定义对象等) - 先判断列表为空或间隔值无效的情况,直接返回空列表避免报错
- 初始化结果列表时先加入第一个元素
- 通过循环从索引
n开始,以n为步长遍历原列表,将对应元素加入结果
示例使用
针对你给出的水果列表场景:
void main() { final fruits = ['banana', 'cherry', 'apple', 'pear', 'kiwi']; final interval = 3; final extractedList = extractElements(fruits, interval); print(extractedList); // 输出: [banana, pear] }
其他测试场景
- 当间隔
n=1时,返回原列表:final numbers = [1, 2, 3, 4, 5]; print(extractElements(numbers, 1)); // 输出: [1, 2, 3, 4, 5] - 当间隔
n大于列表长度时,仅返回第一个元素:final numbers = [1, 2]; print(extractElements(numbers, 5)); // 输出: [1] - 当列表只有一个元素时,无论间隔是多少都返回该元素:
final singleItem = ['test']; print(extractElements(singleItem, 10)); // 输出: [test]
内容的提问来源于stack exchange,提问作者Blue M
相关产品推荐
相关产品推荐

