如何通过对flutter中的元素求和来拆分列表

Posted

技术标签:

【中文标题】如何通过对flutter中的元素求和来拆分列表【英文标题】:How to split a list in flutter by summation of the elements in flutter 【发布时间】:2022-01-24 02:10:12 【问题描述】:

我想根据元素的累积总和等于4将一个列表例如L = [1,2,1,2,2,1,1,2]拆分为子列表。即列表应该是拆分为 S=[[1,2,1],[2,2],[1,1,2]]

我正在做类似的事情,比如我有一个类型映射列表,我想对列表中的第一个连续的新单位值求和,这样如果第一个连续的数字是 30,我将拆分它并添加剩余的下一个列表的最后一个元素

例如。我有这个清单 [[id: FG00017, newunit: 20, product: category: Ball Foods, productname: GP Semovita 4 x 2.5kg - New Pack!, itemID: FG00017, active: 1, minorderqty: 1, price: 4010, netweight: 0,单位:Bags,bagcount:100,图片:“”,locationID:Apapa,locationname:Apapa,items:2000,id:FG00018,newunit:10,product:category:Ball Foods,productname:GP Semovita 2 x 2.5kg - 新包装!,itemID:FG00018,活跃:1,minorderqty:1,价格:2070,净重:0,单位:Bags,bagcount:200,图片:“”,locationID:Apapa,locationname:Apapa , items: 2000, id: FG00032, newunit: 1, product: category: Ball Foods, productname: GP Goldenvita 4 x 2.5kg - New Pack, itemID: FG00032, active: 1, minorderqty: 1, price: 3445 , netweight: 0, unit: Bags, bagcount: 100, image: "", locationID: Apapa, locationname: Apapa, items: 100]],

前两个连续的新单元加起来是30,所以我这样拆分

[[id: FG00017, newunit: 20, product: category: Ball Foods, productname: GP Semovita 4 x 2.5kg - New Pack!, itemID: FG00017, active: 1, minorderqty: 1, price: 4010 , netweight: 0, unit: Bags, bagcount: 100, image: https:, locationID: Apapa, locationname: Apapa, items: 2000, id: FG00018, newunit: 10, product: category: Ball Foods, productname :GP Semovita 2 x 2.5kg - 新包装!,itemID:FG00018,active:1,minorderqty:1,价格:2070,净重:0,单位:Bags,bagcount:200,图片:https:,locationID:Apapa,locationname : Apapa, items: 2000], [id: FG00032, newunit: 1, product: category: Ball Foods, productname: GP Goldenvita 4 x 2.5kg - New Pack, itemID: FG00032, active: 1, minorderqty: 1、价格:3445,净重:0,单位:Bags,bagcount:100,图片:https:,locationID:Apapa,locationname:Apapa,items:100]],

请帮忙,紧急谢谢

【问题讨论】:

【参考方案1】:

不必要的复杂性有什么功劳吗?如果是这样,可以使用sync* 函数。

void main() 
  print(parcel([1, 2, 1, 2, 2, 1, 1, 2].iterator));


Iterable<List<int>> parcel(Iterator<int> input) sync* 
  List<int>? group;
  while (input.moveNext()) 
    group = (group ?? <int>[])..add(input.current);
    if (group.reduce((v, e) => v + e) >= 4) 
      yield group;
      group = null;
    
  

如何处理未完成至少 4 组的输入的任何成员,留给读者作为练习。

【讨论】:

谢谢你,先生,正在做类似的事情 已将问题更新为我的要求,请查看 看来您可以对更新后的问题使用与此答案相同的逻辑。

以上是关于如何通过对flutter中的元素求和来拆分列表的主要内容,如果未能解决你的问题,请参考以下文章

对“列表”列表中的元素求和,每个元素都有不同的索引

对列表中每个元素索引的最大值求和 [关闭]

如何对稀疏矩阵列表求和?

如何使用 Dart / Flutter 中的列表从列表中删除重复元素?

如何将列表中的连续元素拆分为子列表

如何通过特定的字符串元素将字符串列表拆分为字符串的子列表