我想基于他的部门ID(如果选择),组织ID(如果选择),角色(如果选择,需要与用户的任何角色匹配 - 用户可以拥有)来过滤用户列表多个角色)和 与子字符串进行比较 - 名称 。
以下是我编写的工作代码。但这有2个循环/过滤器。
const {orgId, deptId, role, searchInputValue} = this.state
const filter = {}
if (orgId) {
filter.organization = {
id: orgId
}
}
if (deptId) {
filter.department = {
id: deptId
}
}
if (role) {
filter.roles = [role]
}
let filteredUsers = lodash.filter(this.props.initialUsers, filter)
if (searchInputValue) {
filteredUsers = filteredUsers.filter(item =>
lodash.startsWith(item.name.toLowerCase(), searchInputValue))
}
如何将这些循环或过滤器合并为一个?
如何在同一searchInputvalue
对象中指定filter
并避免第二个用户列表过滤?
NB:我想知道使用传递过滤器对象的lodash简化上述代码的解决方案,而不是寻找解决方案, - 我可以使用基本的array.filter并具有检查所有条件的功能 - 或者使用lodash过滤器并传入一个函数来检查我的所有条件。