You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:25:18