partition - 数组元素分组

优质
小牛编辑
129浏览
2023-12-01

根据所提供的函数对每个元素进行迭代,将这些元素分成两个数组。

使用 Array.reduce() 创建两个数组的数组。 使用 Array.push()fn 返回为 true 的元素添加到第一个数组,而 fn 返回 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 }]]