title | tags |
---|---|
partition |
array,object,function,intermediate |
Groups the elements into two arrays, depending on the provided function's truthiness for each element.
- Use
Array.prototype.reduce()
to create an array of two arrays. - Use
Array.prototype.push()
to add elements for whichfn
returnstrue
to the first array and elements for whichfn
returnsfalse
to the second one.
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 }]]