915 B
915 B
title, tags, cover, firstSeen, lastUpdated
| title | tags | cover | firstSeen | lastUpdated |
|---|---|---|---|---|
| Partition array in two | array,object | sunflowers | 2018-01-08T16:58:23+02:00 | 2020-11-03T21:46:13+02:00 |
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 whichfnreturnstrueto the first array and elements for whichfnreturnsfalseto 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 }]
// ]