在Flutter中如何从Array随机抽取指定数量元素并生成新数组
Flutter 从字符串数组随机抽取指定数量元素实现方案
不需要引入第三方依赖,直接用Dart原生API即可实现,以下是两种常见场景的实现方式:
场景1:无重复抽取(默认推荐,抽取出的12个元素互不重复)
核心逻辑是先复制原数组、打乱数组顺序后取前12个元素,不会修改原始数组内容:
- 首先导入dart内置的math库
import 'dart:math';
- 完整实现代码示例
void main() { // 你的原始20个元素的字符串数组,替换为实际数组即可 final List<String> originalList = List.generate(20, (index) => '示例文本${index + 1}'); // 复制原数组后打乱,避免改动原数组 final List<String> tempShuffled = List.from(originalList)..shuffle(Random()); // 取前12个元素生成新数组 final List<String> resultList = tempShuffled.take(12).toList(); // 测试打印结果 print(resultList); }
场景2:允许重复抽取(抽取出的元素可能重复)
如果业务允许同一个元素被多次抽到,可以直接随机生成下标取值:
import 'dart:math'; void main() { final List<String> originalList = List.generate(20, (index) => '示例文本${index + 1}'); final Random random = Random(); // 生成12个随机下标取值组成新数组 final List<String> resultList = List.generate(12, (_) { int randomIndex = random.nextInt(originalList.length); return originalList[randomIndex]; }); print(resultList); }
注意:如果原数组本身存在重复元素,无重复抽取的方案也会保留原数组的重复特性,仅保证抽取时不会重复取同一个下标的元素。
内容的提问来源于stack exchange,提问作者salih suat kükrer
相关产品推荐
相关产品推荐

