2019-05-23
描述
使用提供的函数来判断每一个元素是否为真值,并以此把元素分为两组。
提示
- 使用
Array.prototype.reduce()
创建一个包含两个数组的数组 - 使用
Array.prototype.push()
来添加元素,如果提供的函数返回true
就添加到第一个数组中,如果提供的函数返回false
就添加到第二个数组中
代码
const partition = (arr, fn) =>
arr.reduce(
(acc, val, i, arr) => {
acc[fn(val, i, arr) ? 0 : 1].push(val);
return acc;
},
[[], []]
);
示例
根据用户的活跃与否对用户进行分组:
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 }]]