我有一个
Iterable<MyClass>
,其中 MyClass
有一个属性 data
。现在我想从最后添加的项目开始从 Iterable 中删除元素。我想删除它们,直到仍在 Iterable 中的所有 data
属性中的所有字符总和低于某个阈值。
当然,我可以通过简单的循环和 if 语句迭代列表,删除最后一个,然后检查、删除下一个等。我只是想知道在 Dart 中是否有更优雅的方法来做到这一点?使用一些内置函数?
谢谢!
了解您现在使用的方法很重要
但是如果我有类似的问题 我会这样做:
类我的类{ 字符串数据;
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
}