从列表的尾部开始删除元素,直到传入的遍历函数返回 true
,然后返回剩下的元素。
使用 List.lastIndexWhere()
来遍历执行 test
函数,以找到最后一个满足条件的元素。如果未找到,返回空数据;否则使用 List.sublist()
来返回剩下的元素。
代码实现
List<T> dropRightWhile<T>(List<T> lst, bool Function(T) test) {
int rightIndex = lst.lastIndexWhere(test);
return rightIndex == -1 ? [] : lst.sublist(0, rightIndex + 1);
}
使用样例
dropRightWhile([1, 2, 3, 4], (n) => n < 3); // [1, 2]