跳到主要内容

partition

TS JS Deno

根据提供的函数对每个元素的真值性,将元素分组为两个数组。

使用 Array.prototype.reduce() 创建包含两个数组的数组。 使用 Array.prototype.push()fn 返回 true 的元素添加到第一个数组中,将 fn 返回 false 的元素添加到第二个数组中。

typescript
const partition = (arr: any[], fn: Predicate) =>
arr.reduce(
(acc, val, i, arr) => {
acc[fn(val, i, arr) ? 0 : 1].push(val);
return acc;
},
[[], []]
);
typescript
const users = [
{ user: "barney", age: 36, active: false },
{ user: "fred", age: 40, active: true },
];
partition(users, (o) => o.active); // [[{ 'user': 'fred', 'age': 40, 'active': true }],[{ 'user': 'barney', 'age': 36, 'active': false }]]