Splits values into two groups according to a predicate function, which specifies which group an element in the input collection belongs to.
If the predicate function returns true, the collection element belongs to the first group; otherwise, it belongs to the second group.
Use Iterable.retainWhere() and Iterable.removeWhere() in combination with the cascade operator (..) and List.from() to create the appropriate groups using the filter function.
代码实现
List<List<T>> bifurcateBy<T>(List<T> lst, bool Function(T) filter) {
return [
List.from(lst..retainWhere(filter)),
List.from(lst..removeWhere(filter))
];
}
使用样例
bifurcateBy(['beep', 'boop', 'foo', 'bar'], (x) => x[0] == 'b'); // [['beep', 'boop', 'bar'], ['foo']]