Files
30-seconds-of-code/snippets/partition.md
Isabelle Viktoria Maciohsek 81e37d20c0 Consistent whitespace
2020-11-03 21:46:13 +02:00

33 lines
821 B
Markdown

---
title: partition
tags: array,object,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 which `fn` returns `true` to the first array and elements for which `fn` returns `false` to the second one.
```js
const partition = (arr, fn) =>
arr.reduce(
(acc, val, i, arr) => {
acc[fn(val, i, arr) ? 0 : 1].push(val);
return acc;
},
[[], []]
);
```
```js
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 }]
// ]
```