Lodash:如何在集合中获得随机项目,而不重复?

时间:2019-08-09 15:05:27

标签: javascript lodash

我正在尝试使用Lodash从过滤后的集合中获取随机元素,而没有重复项,但是我不确定从主集合中删除它们的最简洁,最有效的方法(这样就不会有重复项)。

我能够使用_.sample_.filter从过滤的集合中获取随机元素,例如:

let people = [
  {name: "Bob", age: 23, gender: "M" },
  {name: "Jane", age: 25, gender: "F"},
  {name: "James", age: 30, gender: "M"},
  {name: "Anna", age: 16, gender: "F"},
  {name: "Tom", age: 22, gender: "M"},
  {name: "Jess", age: 24, gender: "F"},
  {name: "Mike", age: 13, gender: "M"}
]

let randomOver20 = _.sample(_.filter(people, person => person.age > 20))

// randomOver20 = {name: "Jane", age: 25, gender: "F"} 


现在,如果我要从经过过滤的集合中获取另一个随机元素,请说:

let randomFemale = _.sample(_.filter(people, person => person.gender === "F"))

// randomFemale = either Jess or Anna.
// Jess should be out of contention, as she was selected from the previous set. 

这是获取随机元素并将其从原始集合中删除之后的步骤,我对此有些犹豫。我可以使用_.remove,但是是否有更高效,更简洁的流程,尤其是当我收集了100多个项目时?

0 个答案:

没有答案