📜  Lodash _.partitionBy() 方法(1)

📅  最后修改于: 2023-12-03 14:44:02.815000             🧑  作者: Mango

Lodash _.partitionBy() 方法

在Lodash中,_.partitionBy() 方法可以根据一个特定的规则将集合中的元素进行分组,返回一个由两个数组组成的新的集合,第一个数组包含符合规则的元素,第二个数组包含不符合规则的元素。

语法
_.partitionBy(collection, [iteratee=_.identity])
  • collection: 需要操作的集合,可以是 array、object 或 string。
  • [iteratee=_.identity]: 在每一项上应用的函数,用于区分符合规则和不符合规则的元素。这个参数可以是一个函数,也可以是一个属性名字符串,将会以 lodash.get 的方式使用。
返回值

返回一个由两个数组组成的新集合,第一个数组包含符合规则的元素,第二个数组包含不符合规则的元素。

示例
const users = [
  { name: 'Bob', age: 25 },
  { name: 'Alice', age: 32 },
  { name: 'Mary', age: 28 },
  { name: 'John', age: 20 }
];

const [young, old] = _.partitionBy(users, user => user.age < 30);

console.log(young); // [{ name: 'Bob', age: 25 }, { name: 'Mary', age: 28 }, { name: 'John', age: 20 }]
console.log(old); // [{ name: 'Alice', age: 32 }]

在这个示例中,我们使用 _.partitionBy() 方法将 users 数组中的元素根据年龄是否小于 30 进行分组,并将结果保存在 young 和 old 变量中。young 包含年龄小于 30 的元素,而 old 则包含年龄大于或等于 30 的元素。

进一步使用

由于 _.partitionBy() 方法可以接收一个属性名字符串作为第二个参数,我们还可以使用它来快速从一个对象数组中分组:

const users = [
  { name: 'Bob', age: 25, gender: 'male' },
  { name: 'Alice', age: 32, gender: 'female' },
  { name: 'Mary', age: 28, gender: 'female' },
  { name: 'John', age: 20, gender: 'male' }
];

const [males, females] = _.partitionBy(users, 'gender');

console.log(males); // [{ name: 'Bob', age: 25, gender: 'male' }, { name: 'John', age: 20, gender: 'male' }]
console.log(females); // [{ name: 'Alice', age: 32, gender: 'female' }, { name: 'Mary', age: 28, gender: 'female' }]

在这个示例中,我们使用了一个属性名字符串作为第二个参数,将 users 数组中的元素根据其 gender 属性进行分组。由于 gender 只有两种可能的取值,我们只需要将结果保存在 males 和 females 两个变量中。

总之,Lodash _.partitionBy() 方法是一个很实用的方法,它可以帮助我们快速地将集合中的元素进行分组,有助于我们更方便地对数据进行处理。