Skip to content

Latest commit

 

History

History
25 lines (21 loc) · 823 Bytes

partition.md

File metadata and controls

25 lines (21 loc) · 823 Bytes
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 which fn returns true to the first array and elements for which fn returns false 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 }]]