Lodash使用嵌套值和子字符串比较过滤集合

时间:2017-12-07 18:55:23

标签: javascript filter ecmascript-6 filtering lodash

我想基于他的部门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过滤器并传入一个函数来检查我的所有条件。

0 个答案:

没有答案