#flutter #dart
Вопрос:
List<int> mainList = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
List<int> chukLengths= [2,4,4,4,2]
ожидаемый результат:
[[1,2],[3,4,5,6],[7,8,9,10],[11,12,13,14],[15,16]]
Я хочу разделить основной список на 5 частей с указанной длиной.
Как решить эту проблему в Dart?
Ответ №1:
Вы можете перебрать массив ваших фрагментов и отрезать необходимые фрагменты из основного массива. На каждой итерации вы получаете сам фрагмент с помощью sublist()
, а затем удаляете фрагмент из исходного массива с помощью removeRange()
Вот код:
List<int> mainList = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
List<int> chukLengths= [2,4,4,4,2];
List<List<int>> splitIntoChunks(List<int> list, List<int> chunks) {
List<List<int>> result = [];
for (int chunk in chunks) {
result.add(list.sublist(0, chunk));
list.removeRange(0, chunk);
}
return resu<
}
void main() {
print(splitIntoChunks(mainList, chukLengths)); // [[1, 2], [3, 4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14], [15, 16]]
}
Комментарии:
1. Короче:
List<List<T>> splitIntoChunks<T>(List<T> list, List<int> chunkLengths) => [for (var i = 0, s = 0; i < chunkLengths.length; i ) list.sublist(s, s = chunkLengths[i])];