从列表的尾部开始删除元素,直到传入的遍历函数返回 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]