Skip to content

Latest commit

 

History

History
31 lines (25 loc) · 848 Bytes

partition.md

File metadata and controls

31 lines (25 loc) · 848 Bytes
标题 标签
partition(分区数组) array,object(数组,对象)

根据提供的函数对每个元素的真实性,将元素分组到两个数组中。

  • 使用 Array.prototype.reduce() 创建一个包含两个数组的数组。
  • 使用 Array.prototype.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 }]
// ]

应用场景