partition
根据提供的函数对每个 元素的真值性,将元素分组为两个数组。
使用 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 }]]