Dart:从 Iterable 中删除,直到满足条件

问题描述 投票:0回答:1

我有一个

Iterable<MyClass>
,其中
MyClass
有一个属性
data
。现在我想从最后添加的项目开始从 Iterable 中删除元素。我想删除它们,直到仍在 Iterable 中的所有
data
属性中的所有字符总和低于某个阈值。

当然,我可以通过简单的循环和 if 语句迭代列表,删除最后一个,然后检查、删除下一个等。我只是想知道在 Dart 中是否有更优雅的方法来做到这一点?使用一些内置函数?

谢谢!

flutter dart iterable
1个回答
0
投票

了解您现在使用的方法很重要

但是如果我有类似的问题 我会这样做:

类我的类{ 字符串数据;

  MyClass(this.data);
}

void main() {
  Iterable<MyClass> myIterable = [
    MyClass("abc"),
    MyClass("def"),
    MyClass("ghi"),
    MyClass("jkl"),
  ];

  int threshold = 10; // Your threshold value

  // Calculate the sum of characters in all data attributes
  int sum = myIterable.map((myClass) => myClass.data.length).fold(0, (prev, length) => prev + length);

  // Remove elements from the end until the sum is below the threshold
  List<MyClass> remaining = myIterable.toList().reversed.takeWhile((myClass) {
    sum -= myClass.data.length;
    return sum >= threshold;
  }).toList();

  print(remaining); // Remaining elements after removal
}
© www.soinside.com 2019 - 2024. All rights reserved.