Skip to content

partition (Iterator) ​

消费一个迭代器,并按谓词将其元素拆分为两个数组。

typescript
const [matched, unmatched] = partition(source, predicate);

用法 ​

partition(source, predicate) ​

当你想在一次遍历中把惰性流水线的元素分成两组时,请使用 partition——例如,有效记录和无效记录。第一个数组包含 predicate 返回真值的元素,第二个数组包含其余元素,并且每组内部保持相对顺序。这是一个终结操作:它会拉取所有元素,因此不能用于无限迭代器。

typescript
import { partition } from 'es-toolkit/iterator';

// 将数字分为偶数和奇数。
partition([1, 2, 3, 4].values(), x => x % 2 === 0);
// 返回: [[2, 4], [1, 3]]

// 每组内部保持顺序。
partition([3, 1, 4, 1, 5, 9, 2].values(), x => x > 3);
// 返回: [[4, 5, 9], [3, 1, 1, 2]]

参数 ​

  • source (Iterator<T>): 要拆分的迭代器。
  • predicate ((value: T, index: number) => boolean): 以每个元素及其索引调用;返回真值时将该元素放入第一个数组。

返回值 ​

([T[], T[]]): 由 [matched, unmatched] 两个数组组成的二元组。

采用 MIT 许可证发布。