javascript - _Filrer 使用多个条件过滤 JSON

标签 javascript underscore.js

[
  {
    "Employee_Id": 252156,
    "Active_Ind": true,
    "EmployeeRoles": [
      {
        "Employee_Role_Id": 1,
        "Employee_Role_Nm": "Tax Prep"
      }
    ]
  },
  {
    "Employee_Id": 252156,
    "Active_Ind": true,
    "EmployeeRoles": [
      {
        "Employee_Role_Id": 1,
        "Employee_Role_Nm": "Tax Prep"
      },
      {
        "Employee_Role_Id": 2,
        "Employee_Role_Nm": "Tax Prep"
      }
    ]
  },
  {
    "Employee_Id": 252156,
    "Active_Ind": true,
    "EmployeeRoles": [
      {
        "Employee_Role_Id": 1,
        "Employee_Role_Nm": "Tax Prep"
      },
      {
        "Employee_Role_Id": 3,
        "Employee_Role_Nm": "Tax Prep"
      }
    ]
  },
  {
    "Employee_Id": 252156,
    "Active_Ind": false,
    "EmployeeRoles": [
      {
        "Employee_Role_Id": 1,
        "Employee_Role_Nm": "Tax Prep"
      },
      {
        "Employee_Role_Id": 2,
        "Employee_Role_Nm": "Tax Prep"
      }
    ]
  }
]

如何使用 _.filter 来过滤以下条件

1.Employee_Role_Id 1 或 3

2.Active_Ind 为 true

var activeEmployee = _.filter(employees, function (employee) {
                return _.some(employee.Employee.EmployeeRoles, { 'Employee_Role_Id': 1 });
            })

;

最佳答案

你可以这样做:

var employees = [{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 2,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 3,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": false,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 2,"Employee_Role_Nm": "Tax Prep"}]}],
    activeEmployee = _.filter(employees, function (employee) {
      return employee.Active_Ind && _.some(employee.EmployeeRoles, function(role) {
        return 1 === role.Employee_Role_Id || 3 === role.Employee_Role_Id;
      });
    });

console.log(activeEmployee);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

关于javascript - _Filrer 使用多个条件过滤 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736900/

相关文章:

javascript - javascript 中过渡的不透明度运行不流畅

javascript - jQuery Ajax 返回多个数据

javascript - 基于公共(public)id连接两个js对象数组的功能方式

javascript - 如何安装 underscore.js?

javascript - 如何在ajax成功函数中将表id绑定(bind)到DOM

javascript - 使用 vueJS 创建过滤器类别选项选择

javascript - 文件下载哪个更好?为什么?

javascript - 如何更改与 Backbone 集合中的模型关联的几个元素的 css 属性?

underscore.js - 在对象中使用下划线限制 - 如何保留对象的引用?

javascript - 如何在nodejs中使用lodash/下划线找到两个数组之间的差异