📅  最后修改于: 2023-12-03 14:44:02.815000             🧑  作者: Mango
在Lodash中,_.partitionBy() 方法可以根据一个特定的规则将集合中的元素进行分组,返回一个由两个数组组成的新的集合,第一个数组包含符合规则的元素,第二个数组包含不符合规则的元素。
_.partitionBy(collection, [iteratee=_.identity])
返回一个由两个数组组成的新集合,第一个数组包含符合规则的元素,第二个数组包含不符合规则的元素。
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() 方法是一个很实用的方法,它可以帮助我们快速地将集合中的元素进行分组,有助于我们更方便地对数据进行处理。